0

最近のコード レビューの 1 つで、set/get はオプションであり、UnsupportedException をスローする可能性があると言われました。

これは私のコードです:

 List<myObj> myList = new ArrayList<>();

ArrayList は get/set をオプションとして識別しません。さらに、Array.asList() を使用した場合、Array.asList() はリスト インターフェイスで配列 (固定サイズ) をラップするため、これらのエラーが発生する可能性があります。

ですから、私の質問は、私が正しいかどうかを確認してください。必要に応じて作業を更新します。

4

2 に答える 2

5

java.util.Listインターフェース ( javadoc ) は、いくつかのメソッドをオプションとして定義しています。これには含まれますが、含まれset(int, E)ませ get()。はArrayList両方の方法を実装しています。安全に使用できます。コード レビュアーの意図が、これらの呼び出しを try/catch ブロックでラップすることである場合、私は激しく反対します。

于 2013-08-26T20:42:53.327 に答える
3

つまり、Javaのほとんどの実装は拡張されていUnsupportedExceptionます。このクラスには、独自の抽象メソッドがいくつかあります。メソッド likeおよびare like soの実装UnsupportedOperationExceptionListjava.util.AbstractListsetget

public E set(int index, E element) {
    throw new UnsupportedOperationException();
}

その意味では、それらを実装する必要はなく、オプションです。それらを使用しようとすると、例外が発生します。

java.util.ArrayListこれらのメソッドをオーバーライドするため、そのような例外がスローされる心配はありません。

Array.asList()type のインスタンスを返しますがjava.util.Arrays$ArrayList、およびextends AbstractListを含むいくつかのメソッドをオーバーライドします。インターフェイスを使用した場合、それらはスローしません。setgetUnsupportedOperationExceptionList

于 2013-08-26T20:43:58.030 に答える