Pocket

Collections.unmodifieableListで作ったListは、変更できないListです。setやadd、removeメソッドを呼ぶと、UnsupportedOperationExceptionがスローされます。ただし、コンパイル時にはわかりません。

org.eclipse.collectionsのImmutableListも変更できないリストです。ImmutableListには、setやadd、removeメソッド自体がないので、もしsetやadd、removeを呼んでいれば、コンパイル時にわかります。

もし、ImmutableListを使えるなら、setやadd、removeなどの変更メソッドをうっかり使っていてもコンパイル時にわかるので、unmodifieableListよりもいいかもしれません。

androidで、org.eclipse.collectionsを使うために、app/build.gradleのdependensiesに次の設定をしました。

ビルドすると、次のエラーが。

Caused by: com.android.builder.merge.DuplicateRelativeFileException: More than one file was found with OS independent path 'LICENSE-EDL-1.0.txt'

Caused by: com.android.builder.merge.DuplicateRelativeFileException: More than one file was found with OS independent path 'LICENSE-EPL-1.0.txt'

app/build.gradleにandroid.packagingOptionsを追加しました。

ビルドすると、次のエラーが。

Caused by: com.android.build.api.transform.TransformException: java.lang.ArrayIndexOutOfBoundsException: 65535

Caused by: java.lang.ArrayIndexOutOfBoundsException: 65535

multiDexEnabledや、implementation 'androidx.multidex:multidex:2.0.1'、MultiDexApplicationなどを試しましたが、効果がありませんでした。

すこしさまよいながら、app/build.gradleにandroid.compileOptionsを追加したところ、さきほどのエラーはなくなり、ビルドできました。

まとめると、次のように編集しました。