【问题标题】:Get type of Object from constructor for generic parameters?从构造函数获取泛型参数的对象类型?
【发布时间】:2015-04-13 16:50:52
【问题描述】:
private LinkedList register;

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

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

也许是 obj.getClass?

【问题讨论】:

  • 这是什么语言?
  • 语言是Java。
  • 你考虑过使用泛型吗?
  • 我该怎么写?我试过了,但我似乎没有正确编程。新的 LinkedList() ?

标签: java object generics collections linked-list


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    基本上不,泛型只是编译时的,需要在某个地方声明。

    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

    【讨论】:

    • 谢谢,但是为什么不在构造函数中使用 obj 而不是 "T" (new LinkedList) 呢?但是我会检查课程,再次感谢!
    • @Duy obj 是一个变量,而不是一个类型。我们使用T,因为Tobj 的类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2020-01-29
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多