Java泛型使用误区:类型擦除示例
在Java中,泛型是一种可以让我们创建具有多种数据类型的集合的方法。然而,使用泛型时,可能会遇到类型擦除的问题。下面是一个具体的例子:
// 泛型集合
public class GenericList<T> {
private List<T> list;
// 构造函数
public GenericList() {
list = new ArrayList<>();
}
// 通过泛型添加元素
public void add(T item) {
list.add(item);
}
// 获取元素列表(类型擦除)
public List<?> getItems() {
return list;
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
// 创建泛型集合,添加元素
GenericList<Integer> integerList = new GenericList<>();
integerList.add(1);
integerList.add(2);
// 获取元素列表(类型擦除)
List<?> itemList = integerList.getItems();
// 打印元素列表,可以看到原始的Integer类型被擦除了
for (Object item : itemList) {
System.out.println(item);
}
}
}
在上述例子中,我们创建了一个泛型集合GenericList<Integer>
,然后添加了一些整数。当我们通过getItems()
方法获取元素列表时,可以看到原始的Integer类型已经被Java虚拟机(JVM)自动擦除了,这就是类型擦除的现象。
还没有评论,来说两句吧...