我正在尝试创建一个泛型类.这是我的类文件.
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.如何为内容创建抽象数组?
至于初始化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.
| 归档时间: |
|
| 查看次数: |
3599 次 |
| 最近记录: |