多维通用数组Java

时间:2012-09-07 18:58:41

标签: java generics multidimensional-array

  

可能重复:
  Java how to: Generic Array creation

我想创造这样的东西:

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

但我得到一个错误“通用数组创建”,我该如何解决? :(

3 个答案:

答案 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>的对象,但您可以在班级的构造函数中选择一个。