配列数が動的な総称型の配列を作る必要がある時、、、
n個の配列、全て null で初期化するなら、
@SuppressWarnings("unchecked") public static <T> T[] nullArrays(int n, Class<T> cls) { return (T[])Array.newInstance(cls, n); }
ただし、int.class や、char.class を指定できない。
固定の値で初期化するなら、
public static <T> T[] valueArrays(int n, T value) { @SuppressWarnings("unchecked") T[] t = (T[])Array.newInstance(value.getClass(), n); for(int i=0; i < n; i++) t[i] = value; return t; }
可変引数 T... を使えば、不足分をnull に、、
@SuppressWarnings("unchecked") public static <T> T[] valueArrays(int n, T...values) { T[] t = (T[])Array.newInstance(values[0].getClass(), n); int vlen = values.length; for(int i=0; i < n; i++) t[i] = i < vlen ? values[i] : null; return t; }
例)
String[] sary = valueArrays(5, "A", "B", "C"); String res2 = Arrays.stream(sary).map(e->"["+e+"]").collect(Collectors.joining("")); System.out.println(res2);
結果
[A][B][C][null][null]