空の ArrayList を新規生成するラムダ式


Want

ファクトリメソッドとして空のArrayListを新規作成する Lambda 式を渡したいとき、次のようなラムダを渡すと Sonarqube や IntelliJ 等に "Replace this lambda with a method reference."や"Lambda can be replaced with method reference." というように直接実装を書くんじゃなくてメソッド参照にしろと怒られる。

() -> new ArrayList()

Do

次を渡せばOK。

ArrayList::new

Don't

空のArrayListを用意したあとでそのインスタンスに要素を追加していく場合、次はアウト。

Collections.emptyList()

Why

Collections.emptyList() で生成したリストは、基本的に操作できません。
add メソッドなどを呼び出すと UnsupportedOperationException が発生します。

次も参考にどうぞ。

https://www.baeldung.com/java-collections-emptylist-new-list