7

質問はそれをすべて言います..

リストのコードから:

メソッドを追加: public boolean add(E e) { ... }

一方、メソッドを削除します: public boolean remove(Object o) { .. }

これには具体的な理由はありますか?

4

1 に答える 1

7

javadocから:

このリストに要素が含まれていない場合、変更されません

したがって、ここに型制約を追加してもまったく役に立ちませんが、on の制約addにより、コンパイル時にリストにボックスに書かれている内容が含まれることが保証されます。

メソッドは

指定された要素の型がこのリストと互換性がない場合は ClassCastException (オプション)

ArrayList 実装はこの例外をスローしません:

439    public boolean remove(Object o) {
440         if (o == null) {
441             for (int index = 0; index < size; index++)
442                 if (elementData[index] == null) {
443                     fastRemove(index);
444                     return true;
445                 }
446         } else {
447             for (int index = 0; index < size; index++)
448                 if (o.equals(elementData[index])) {
449                     fastRemove(index);
450                     return true;
451                 }
452         }
453         return false;
454     }

これは、削除操作を行う前に生オブジェクトのクラスを確認する必要がないことを意味します。

于 2012-09-12T07:06:09.797 に答える