我想生成一个通用列表,其中列表的类型仅在运行时知道(它是创建该列表的对象类型)。
完整说明:
我想在抽象类中实现此功能,所以我在运行时之前知道父类。
不知道该怎么做。
Class myClass = getClass().getSuperclass();
LinkedList<myClass> list = new LinkedList<myClass>();
不起作用。有什么想法吗?
答案 0 :(得分:6)
或者你可以写:
List<Object> list = new LinkedList<Object>();
答案 1 :(得分:3)
泛型主要是一个编译时功能,所以在这种情况下没有任何意义。
你可以写
List list = new LinkedList();
如果可以使用,我通常更喜欢ArrayList。 ;)
答案 2 :(得分:0)
只需使用Non-Generics
ArrayList
ArrayList arrList = new ArrayList();
即使您可以使用<?>
使用List
的想法会很好,因为它显示了"Program in Interface rather than implementation"
答案 3 :(得分:0)
另一种选择是使用扩展类的类型对抽象类进行参数化。这有点过度设计,但应该有效:
package test;
import java.util.ArrayList;
import java.util.List;
public class AbstractListHolder<T> {
private List<T> list = new ArrayList<T>();
List<T> getList() {
return list;
}
}
class ListHolder extends AbstractListHolder<ListHolder> {
void doSomething() {
getList().add(this);
}
}