欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用泛型的一些问题

程序员文章站 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) {}
}

 

相关标签: java 泛型