我想创造这样的东西:
public class MyClass<T> {
private int row;
private int column;
private T[][] result;
public T[][] generation(int size, T[] values) {
result = new T[values.length][size];
generator(0, 0);
return result;
}
}
但我得到一个错误“通用数组创建”,我该如何解决? :(
答案 0 :(得分:5)
如果您可以获得T
类型Class<T>
,则可以按以下方式使用Array.newInstance
...
public T[][] generation(int size, T[] values) {
result = (T[][]) Array.newInstance(values.getClass().getComponentType(),
values.length, size);
generator(0, 0);
return result;
}
答案 1 :(得分:0)
新T是不可能的,你必须在返回之前或返回之后使用Object和强制转换
也不可能使用Integer,Float等基元
答案 2 :(得分:0)
java.lang.reflect.Array.newInstance正是您所需要的。
您只需要Class<T>
的对象,但您可以在班级的构造函数中选择一个。