List.of(...)またはCollections.unmodizableList() の特殊なケースとして---推奨されるJava 9の方法で空および不変リスト?
書き続ける
Collections.emptyList();
またはに切り替えます
List.of();
空で不変のリストを指すための好ましいJava 9の方法は何ですか?
違いはかなり微妙なので、「優先」は達成したいことによって異なります。いくつかの動作の違い:
List.of
_は、何らかの奇妙な理由で発生した場合、contains(null)
呼び出しで例外をスローします。emptyList()
を逆シリアル化できますが、_List.of
_は逆シリアル化できません。空のリストが必要であることを伝えるために、emptyList()
の方が見栄えがよいかもしれませんが、これは一時的な規則にすぎません。開発者がList.of()
(Collections.emptyList()
よりもはるかに短い)を使い始めると、それは既知の受け入れられた方法になります。これはまったく新しい方法です。考えてみれば、私たちが使っているコンストラクトの中には、それ自体が何をしているのかを必ずしも伝えていないものもありますが、慣れてきました。
したがって、厳密に好ましい方法はありません。動作が重要でない場合は、必要なものを使用してください。
Collections.emptyList()
は、呼び出しごとに新しいオブジェクトを作成する必要はありません。シングルトン_EMPTY_LIST
_オブジェクトを返すのが一般的です OpenJDKのように 。さらに、プレースホルダーの入力を忘れるのではなく、空のリストをmeanするつもりであることは明らかです。
emptyList()
を使用します。高速(最大Javaターゲットレベル1.9))であり、読みやすくなっています。