2017-05-26 8 views
0

何らかの理由で、AbstractListの拡張機能でremoveAllを実行できました。メソッドはUnsupportedOperationExceptionをスローしませんでしたが、それは必要ですか

特に、リストはjava.util.Arrays.Arraylist(java.util.ArrayListではない)であり、これはAbstractListの拡張であり、removeまたはaddをサポートしていません。

List<String> defaultList = Arrays.asList(getDefaultNames()); 
    List<String> names = _adapter.getContainerNames(); 

    defaultList.removeAll(names); 

に次の行

Set<String> defaultList = new HashSet<>(Arrays.asList(getDefaultNames())); 
    Set<String> names = new HashSet<>(_adapter.getContainerNames()); 

    defaultList.removeAll(names); 

を変更した後、私は、コードをコンパイルして実行し、さらには完全にアプリの削除後、ソート順にリストを表示することができました。

私はすべてのブレークポイントを削除しました(私はすべての行にブレークポイントを持っていました)、古いバージョンと新しいバージョンを数回(gitの各バージョンをチェックしてコンパイルしてインストールします)ソートされたリストを持つ代わりに、私はUnsupportedOperationExceptionを取得しました。

これまで実行したことがないはずのand​​roid.jar.java.util.Arraysオープンソースコードの実装からわかりました。

私は真面目に困惑していますが、これは何らかのキャッシングバグやクリーンではないかもしれないと思いますが、どうすればこのようなことが起こるのでしょうか?

これは予期され、潜在的に再現可能ですか?

これを今後どのように回避できますか?毎回きれいにする必要がありますか?

ブレークポイントは、このコードが正しくビルドされないようにしましたか?

答えて

1

いくつかの説明がありますが、既に説明しました。私にとっては、あなたが実際に1つまたは複数の要素を削除しようとすると、removeAll()UnsupportedOperationExceptionしか投げないという可能性が最も高いと思われます。

Arrays.asList("Ole", "No").removeAll(Collections.singletonList("HopefullyHelpful")); 

それは、私のコンピュータ上で任意の例外の兆候は正常に動作しない:

は、私はちょうどこれを試してみました。私はJava 8を使用していますので、 はAndroid上でうまく動作しませんが、試すことができます。私はこれを可能にするドキュメントで何も見つけられませんでした。

ブレークポイントは以前のビルドから残っていますが、別の考えられる説明がありますが、ブレークポイントは確かにあなたの観測とは関係ありません。

関連する問題