Java进阶-泛型的讲解

246 阅读1分钟

泛型定义

泛型就是能广泛适用的类型,泛型还有一种较为准确的说法就是为了参数化类型,或者说可以将类型当作参数传递给一个类或者是方法。

定义泛型类

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 泛型详解-绝对是对泛型方法讲解最详细的,没有之一 总感觉存在问题