是否可以将对象实例类型作为泛型的类型参数传递?类似于以下内容:
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;
}
}
最佳答案
不......泛型类型应该在编译时已知。
泛型用于在编译时捕获可能的运行时异常。
List<Integer> list = new ArrayList<Integer>();
//..some code
String s = list.get(0); // this generates compilation error
因为编译器知道 list
仅用于存储 Integer
对象,并且将从 list 获取的值分配给 String
肯定是错误的。如果泛型类型是在运行时确定的,这会很困难。
关于Java 将对象的实例类型传递给泛型类类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070554/