泛型使用类型擦除来在运行时删除类型,这就是我们在Java中实现参数多态的方法,但我似乎无法提出由于类型擦除而无法编译的示例代码。任何建议将不胜感激:)
答案 0 :(得分:1)
例如:
public void method(Object o) {
...
}
public <T> void method(T t) {
...
}
由于T
的删除是Object
,因此方法签名最终会相同,并且您无法使用相同签名的多个方法。它无法编译错误:
error: name clash: <T>method(T) and method(Object) have the same erasure
public <T> void method(T t) {
^
where T is a type-variable:
T extends Object declared in method <T>method(T)
1 error
答案 1 :(得分:1)
尝试创建像T[] array
这样的通用数组,其中T
是泛型类型。