1、任何基本类型不能作为类型参数
2、 一个类不能实现同一个泛型接口的两种变体,因为擦除会使这两个接口相同
3、使用带有泛型类型参数的转型或instanceof不会有效果,原因也是擦除。
class FixedSizeStack<T>{
private int index = 0;
private Object[] storage;
public FixedSizeStack(int size) {
storage = new Object[size];
}
public void push(T t) {
storage[index++] = t;
}
@SuppressWarnings("unchecked")
public T pop() {
//T被擦除到第一个边界,即Object,所以这里就是将Object转型为Object
return (T)storage[--index];
}
}
4、由于擦除,某种情况下不能重载
class UseList<W,T>{
//编译错误,这里不能重载
// void f(List<W> v) {}
// void f(List<T> v) {}
}
本文探讨了泛型编程中的四个关键限制:基本类型不可作为类型参数,同一泛型接口变体的实现冲突,带有泛型的转型与instanceof无效,以及泛型擦除导致的重载问题。通过具体代码示例,深入理解这些限制背后的原因。
968

被折叠的 条评论
为什么被折叠?



