2013-06-12 51 views

回答

5

编号时应该知道泛型类型。

泛型是在编译时本身捕捉可能的运行时异常。

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

因为编译器知道list意味着仅存储Integer对象和分配值从列表中String得到绝对是一个错误。如果通用类型在运行时确定,这将是困难的。

+1

+1 - 唯一正确的答案。 (是的,类型信息被擦除了,所以你通常不能找出'T'绑定的类型,但即使不是这种情况,你仍然不能用一个参数类“实例化”泛型类型是一个运行时的值,这将使泛型的静态类型变得不可能。) –

0

泛型在编译时被解析,所以不起作用(编译器需要执行该代码来知道结果,而这显然是不可能的,因为它仍在编译:P)。

0

什么是你在做什么呢?你想达到什么目的?为什么不只是这样做:

Item<Object> item = new Item<Object>(obj);