データベースから選択する一連のフィールドを表すリストがあります。私はそれをselect文の文字列を作るために使うクラスに渡しています。ビルド時に、リスト#isEmptyをチェックするたびにConcurrentModificationExceptionが発生します。私はそれをImmutableListに変更しました。この問題はもう解決されません。コレクションが変更された場所のトラッキング(ConcurrentModificationException)
しかし、これは私に混乱している...私は、同時にそれを修正した場所ではUnsupportedOperationExceptionを得ないでしょうか?例外をスロー
ライン:
if (list.isEmpty() || ... null checks) { ... }
が例外:
at java.util.ArrayList$SubList.checkForComodification(ArrayList.java:1231)
at java.util.ArrayList$SubList.size(ArrayList.java:1040)
at java.util.AbstractCollection.isEmpty(AbstractCollection.java:86)
SOLUTION:
私は#isEmptyのためにチェックしていたリストがサブリストでした。メインリストは、サブリストが作成された後に編集されました(いくつかの必須フィールドを追加するため)。 #isEmptyをチェックすると、ConcurrentModificationExceptionが発生しました。おかげさまで
だから... ...私はどのように私はおそらく – user2303325
はサブリスト撮影...私はスタックトレースを取得することができ...私の質問があると仮定しますか()?これは、自分自身の実装ではなく、これを投げているjava.util.ArrayListです。 – user2303325
だから多分これは関連しているかもしれません。私が最初に使用するフィールドを取ったとき、それは大きな配列のようです。だから、リスト#パーティションを使って、その配列を小さなリストに分割します。そして、それらのリストを繰り返して、文の文字列を作成します。そして、私がパーティションのフィールドリストが空であるかどうかをチェックすると、例外が発生します。 – user2303325