【发布时间】:2009-06-10 11:46:17
【问题描述】:
假设我有一堂课 我想在某处将其用作泛型类型:
class MyList<T>
{
T[] list=T[10];
public void add(T element)
{
list[0]=element;
}
}
编译后,它会像泛型集合那样删除其类型信息吗?
我不需要在任何地方使用此代码,所以请不要专注于查找错误。我只是想通过这段代码问一个一般性的问题,编译后将列出实例变量类型为 Object 类。
【问题讨论】:
-
好吧,在这种情况下它不会,因为该代码无法编译:您无法创建泛型数组,并且类的参数化与其变量的参数化不匹配
-
事实上,在这段代码中根本没有创建通用数组......我没有看到任何“新”:--)
-
T 隐式扩展了 Object,因此即使在编译期间,T 也只是一个带有一些编译时检查的 Object。
标签: java generics compilation type-erasure