版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chao821/article/details/83120231
一、泛型的表示形式
1)<T>或者<E,V>:尖括号 <>
中的 T、K、V 被称作是类型参数,另外,还可以使用E、S也可做类型参数、
2)通配符<?>:通配符是为了指定泛型中类型范围,包含以下三种形式:
1、<?>
被称作无限定的通配符。
2、<? extends T>
被称作有上限的通配符。
3、<? super T>
被称作有下限的通配符。
二、类型擦除
泛型是 Java 1.5 版本才引进的概念,在这之前是没有泛型的概念的,但显然,泛型代码能够很好地和之前版本的代码很好地兼容。这是因为,泛型信息只存在于代码编译阶段,在进入 JVM 之前,与泛型相关的信息会被擦除掉,专业术语叫做类型擦除。通俗地讲,泛型类和普通类在 java 虚拟机内是没有什么特别的地方。回顾文章开始时的那段代码
List<String> l1 = new ArrayList<String>();
List<Integer> l2 = new ArrayList<Integer>();
System.out.println(l1.getClass() == l2.getClass());
打印的结果为 true 是因为 List<String>
和 List<Integer>
在 jvm 中的 Class 都是 List.class。泛型信息被擦除了。
三、泛型需要注意的地方
泛型类或者泛型方法不支持8种基本数据类型
参考文章: