IDEのCheckStyleに怒られる
例えばTestクラスで、Collection型のオブジェクトを作るときってどうしていますか?
恐らくArrays.asList()メソッドで値を詰めているかと思います。
しかし、要素が一つの場合のCollection型のオブジェクトを作るときはどうしますか?
同じようにArrays.asList()使いますか?
@Data
@Builder
public class Address {
String address;
String district;
}
こういうEntityクラスがあるとしてSet型に要素一つだけ詰める場合に、
Set<Address> params = new HashSet<>(Arrays.asList(Address.builder()
.address("fashion 109")
.district("Shibuya")
.build()));
こういう詰め方をするとCheckStyleで怒られます。
Call to 'asList' with only one argument
ということで2通りの怒られない詰め方です。
Collections.singletonList()
Set<Address> params = new HashSet<>(Collections.singletonList(Address.builder()
.address("fashion 109")
.district("Shibuya")
.build()));
要素を一つだけ格納できます。
あとからListの中身は変更不可です。
List.of()
Set<Address> params = new HashSet<>(List.of(Address.builder()
.address("fashion 109")
.district("Shibuya")
.build()));
要素をいくつでも詰め込めますが、一つでもCheckStyleに怒られません。
あとからListの中身は変更不可です。
※Java9以降で使用可能です。
まとめ
どちらにしてもListの中は変更不可になってしまうので、
Testで使用する分には問題無いと思いますが、プロダクトコードでは考慮が必要です。
Java9以降であればList.of()メソッドを使ったほうがいいです。
コメントを書く