创建通用列表,从而只在运行时知道列表的类型

时间:2012-10-12 16:13:02

标签: java generics types

我想生成一个通用列表,其中列表的类型仅在运行时知道(它是创建该列表的对象类型)。

完整说明:

我想在抽象类中实现此功能,所以我在运行时之前知道父类。

不知道该怎么做。

    Class myClass = getClass().getSuperclass();
    LinkedList<myClass> list = new LinkedList<myClass>();

不起作用。有什么想法吗?

4 个答案:

答案 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);        
    }

}
相关问题