从构造函数获取泛型参数的Object类型?

时间:2015-04-13 16:50:53

标签: java object generics collections linked-list

private LinkedList register;

public Register(Object obj){
    register = new LinkedList<obj>();
}

基本上,我可以通过此方法定义LinkedList应包含的对象类型吗? (对于Java)

也许是obj.getClass?

2 个答案:

答案 0 :(得分:1)

泛型可能令人困惑。我想你想要这个:

public class Register<T> {
    private LinkedList<T> register = new LinkedList<T>();

    public static <T> Register<T> create(T object) {
        return new Register<T>();
    }
}

答案 1 :(得分:0)

基本上没有,泛型只是编译时间,需要在某处声明。

class Register<T> {
    LinkedList<T> register;

    Register(T obj) {
        register = new LinkedList<T>();
    }

例如,您可以使用工厂方法。

    static <U> Register<U> of(U obj) {
        Register<U> result = new Register<U>(obj);
        return result;
    }
}
Register<String> a = new Register<String>("abc");
Register<Double> b = Register.of(1.0d);

另见Lesson: Generics