java中的通用数组创建

Rah*_*hul 1 java generics

可能重复:
在Java中创建泛型类型的实例?
Java如何:通用阵列创建

我正在尝试创建一个泛型类.这是我的类文件.

public class TestClass<T> implements AbstractDataType<T>{

    T[] contents;

    public TestClass(int length) {
        this.contents = (T[])new Object[length];
    }
}
Run Code Online (Sandbox Code Playgroud)

但内容只有从中继承的方法Object class.如何为内容创建抽象数组?

Mic*_*son 6

至于初始化contents,我认为你拥有的是你能做的最好的.如果有办法,ArrayList可能会这样做(第132行:http://www.docjar.com/html/api/java/util/ArrayList.java.html)

但是当你说"内容只有从Object类继承的方法"时,我假设你的意思是你只能访问类似的方法toString,equals当你在代码中使用T实例时,我猜这是主要问题.那是因为你没有告诉编译器任何T实例是什么.如果要从特定接口或类型访问方法,则需要设置类型约束T.

这是一个例子:

interface Foo {
  int getSomething();
  void setSomethingElse(String somethingElse);
}

public class TestClass<T extends Foo> implements AbstractDataType<T> {
  T[] contents;

  public TestClass(int length) {
    this.contents = (T[])new Object[length];
  }

  public void doSomethingInteresting(int index, String str) {
    T obj = contents[index];
    System.out.println(obj.getSomething());
    obj.setSomethingElse(str);
  }
}
Run Code Online (Sandbox Code Playgroud)

所以现在你可以访问从继承的方法以外的方法Object.