Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多维泛型数组_Java_Generics_Multidimensional Array - Fatal编程技术网

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;};