Possible Duplicate:
Create instance of generic type in Java?
Java how to: Generic Array creation
我正在尝试创建一个通用类型的类。这是我的类(class)文件。
public class TestClass<T> implements AbstractDataType<T>{
T[] contents;
public TestClass(int length) {
this.contents = (T[])new Object[length];
}
}
但是内容只有继承自Object类
的方法。如何为内容创建一个抽象数组?
至于初始化contents
,我认为你拥有的是你能做到的最好的。如果有办法,ArrayList
可能会这样做(第 132 行:http://www.docjar.com/html/api/java/util/ArrayList.java.html)
但是当您说“内容只具有从 Object 类继承的方法”时,我假设您的意思是您只能访问像 toString
这样的方法。和 equals
当您在代码中使用 T 实例时,我猜这是主要问题。那是因为你没有告诉编译器任何关于 T
的信息。实例是。如果要从特定接口(interface)或类型访问方法,则需要对 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);
}
}
所以现在您可以访问除从 Object
继承的方法以外的方法.