使用泛型的一些问题
程序员文章站
2022-03-12 22:26:15
...
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) {}
}
上一篇: 哲学专业排名前十的大学:哪个大学比较好?哪个学校厉害?
下一篇: 自学前端,学多久可以入职前端工程师