标签:
一、泛型中的擦出现象
1.什么是擦出现象?见下例:
1 import java.util.ArrayList;
2
3
4 public class EraseTypeEquivalence {
5 public static void main(String[]args) {
6 Class c1 = new ArrayList<String>().getClass();
7 Class c2 = new ArrayList<Integer>().getClass();
8
9 System.out.println(c1 == c2);
10 }
11 }
结果如下:
居然是true, 首先联系一点,每种对象Class,都只会在java虚拟机中创建其类型的一个Class类,用于创建其他对象,
而这里虽然泛型用的参数类型不同,但是它本质上面还是ArrayList的Class对象,所以两个是一样的。 所以是true
上面这种情况,就是所谓的泛型擦除现象。
泛型内部,无法获得任何有关泛型参数的信息。也就是虽然对象传递的时候有差别,但是进入到泛型容器中后对容器来说他们的类型信息就没有了, 都被认为是“无类型之分”了。
标签:
原文地址:http://www.cnblogs.com/kaiguoguo/p/4811699.html