Java Pass实例类型的Object为泛型类类型参数

Mas*_*eek 2 java generics object type-parameter instancetype

是否可以将Objects实例类型作为泛型的类型参数传递?类似于以下内容:

Object obj = new Double(3.14); //Instance type Double

//Could I do the following?
Item<obj.getInstanceType()> item = new Item<obj.getInstanceType()>(obj);

public class Item<T> {
    private T item;
    public Item(T item) {
        this.item = item
    }
    public T getItem() {
        return this.item;
    }
}
Run Code Online (Sandbox Code Playgroud)

san*_*hat 5

不..泛型类型应该在编译时知道.

泛型可以在编译时捕获可能的运行时异常.

List<Integer> list = new ArrayList<Integer>();
//..some code
String s = list.get(0); // this generates compilation error
Run Code Online (Sandbox Code Playgroud)

因为编译器知道这list只是为了存储Integer对象并将从列表中获取的值分配给String肯定是一个错误.如果在运行时确定泛型类型,则这将是困难的.