総称型の配列を作るメソッド

配列数が動的な総称型の配列を作る必要がある時、、、

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]