泛型定义
泛型就是能广泛适用的类型,泛型还有一种较为准确的说法就是为了参数化类型,或者说可以将类型当作参数传递给一个类或者是方法。
定义泛型类
public Class Test<T> {
T field;
}
那么对于泛型类怎么样使用呢?
Test<String> test1 = new Test<>();
Test<Integer> test2 = new Test<>();
泛型方法
public class Test1 {
public <T> void testMethod(T t){
}
}
通配符 ?
通配符的出现是为了指定泛型中的类型范围。
通配符有 3 种形式。
- 被称作无限定的通配符。
- 被称作有上限的通配符。
- 被称作有下限的通配符。
类型擦除
** 泛型信息只存在于代码编译阶段,在进入 JVM 之前,与泛型相关的信息会被擦除掉,专业术语叫做类型擦除。**
类型擦除带来的局限性
类型擦除,是泛型能够与之前的 java 版本代码兼容共存的原因。但也因为类型擦除,它会抹掉很多继承相关的特性,这是它带来的局限性。
理解类型擦除有利于我们绕过开发当中可能遇到的雷区,同样理解类型擦除也能让我们绕过泛型本身的一些限制。
泛型中值得注意的地方
1.泛型类或者泛型方法中,不接受 8 种基本数据类型。
2.Java 不能创建具体类型的泛型数组如
List<Integer>[] li2 = new ArrayList<Integer>[];
List<Boolean> li3 = new ArrayList<Boolean>[];
参考博客:Java 泛型,你了解类型擦除吗?
Java进阶——泛型详细学习指南,全面总结讲的不错
java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一 总感觉存在问题