instanceof 後のcast する鬱陶しいのを回避で、よく紹介されますが、
if (obj instanceof String) { String s = (String)obj; // String s の処理 }
if (obj instanceof String s) { // String s の処理 }
次のように、総称型の配列を List に変換するのに使用すれば、
null を渡して
java.lang.NullPointerException: Cannot read the array length because "array" is null
にならずに済ませる処理を簡単に書くことができます。
public static <T> List<T> arrayToList(T...ary){ return ary instanceof T[] a ? Arrays.stream(a).collect(Collectors.toList()) : new ArrayList<T>(); }
これは、
String[] ary = {"A", "B", "C"}; List<String> = arrayToList(ary);
List<String> = arrayToList("A", "B", "C");
List<String> = arrayToList(null);
で、いずれも例外を起こすことなくList を生成します。
Arrays.stream(ary).collect(Collectors.toList());
だったら、3番目の null を渡すと、
NullPointerException: Cannot read the array length because "array" is null
になってしまいます。