String[] ary = { "A", "B", null, "C" };
これを System.out.println やログで出力すると
[Ljava.lang.String;@75b84c92
となってしまう。
期待としては、以下のように出力したい。
[A] [B] [null] [C]
汎用性を考えて、オブジェクトの toString が想定どおりに実装されているとして
次のような static メソッドでを用意すれば便利であろう。
import java.util.Arrays; import java.util.Objects; import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; /** * ArrayString */ public interface ArrayString<T>{ public static <T> String print(T[] array) { Objects.requireNonNull(array, "array must not be null"); return Arrays.stream(array) .map(t->"["+Optional.ofNullable(t).map(e->e.toString()).orElse("null")+"]") .collect(Collectors.joining(" ")); } public static <T> Function<T[], String> of() { return x->print(x); } }
使用例
String res = ArrayString.print(ary);
String res = ArrayString.of().apply(ary);
String res = Optional.of(ary).map(ArrayString::print).orElse("null");
いずれも、res は以下の文字列になる
[A] [B] [null] [C]