Java 多维泛型数组
可能重复:Java 多维泛型数组,java,generics,multidimensional-array,Java,Generics,Multidimensional Array,可能重复: 我想创造这样的东西: 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);
我想创造这样的东西:
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;
}
}
公共类MyClass{
私人int row;
私有int列;
私有T[][]结果;
公共T[]生成(整数大小,T[]值){
结果=新的T[值.长度][大小];
发电机(0,0);
返回结果;
}
}
但我遇到了一个错误“通用数组创建”,我如何修复它(新T不可能,您必须在返回之前或之后使用Object和cast
原语也是不可能的,您必须使用整数、浮点等。不可能使用新的T,您必须在返回之前或之后使用Object和cast 原语也是不可能的,您必须使用整数、浮点等。正是您所需要的 你只需要一个
类的对象,但是你可以在你的类的构造函数中得到一个。正是你所需要的
你只需要一个类的对象,但是你可以在你的类的构造函数中得到一个。如果你可以得到T
的类型,即Class
,你可以使用如下方法
public T[][] generation(int size, T[] values) {
result = (T[][]) Array.newInstance(values.getClass().getComponentType(),
values.length, size);
generator(0, 0);
return result;
}
如果您可以获得T
的类型,即类
,您可以利用以下功能
public T[][] generation(int size, T[] values) {
result = (T[][]) Array.newInstance(values.getClass().getComponentType(),
values.length, size);
generator(0, 0);
return result;
}
我看到了使用一维数组的some主题。无法理解如何获取多维数组的实例。我看到了使用一维数组的some主题。无法理解如何获取多维数组的实例。您还可以使用values.getClass().getComponentType()
无需传入type
。谢谢,我能够编写一个函数式java双函数,将通用列表转换为通用二维数组,如下所示:BiFunction toArray=(list,type)->{ta[][=(T[][])array.newInstance(type,list.size(),list.get(0.size());IntStream.range(0,a.length).forEach(i->{a[i]=(T[])list.get(i).toArray();});返回a;};
您也可以使用values.getClass().getComponentType()
无需传入type
。谢谢,我能够编写一个函数式java双函数,将通用列表转换为通用二维数组,如下所示:BiFunction toArray=(list,type)->{ta[][=(T[][])array.newInstance(type,list.size(),list.get(0.size());IntStream.range(0,a.length).forEach(i->{a[i]=(T[])list.get(i).toArray();});返回a;};