2 分钟快速搞懂,Java 泛型中的通配符 T,E,K,V
Java 泛型中的通配符 T , E , K , V , ? 是什么?经常有同学会分不清楚。
本文我们一起来了解下。
送:《泛型最全知识导图》、《大厂泛型面试真题26道》,到本篇结尾处获得~
1 什么是泛型
- 泛型是 JDK5 的一个新特性,是把类型明确的工作,推迟到创建对象、或调用方法时才去明确的特殊的类型;
- 泛型的本质是参数化类型,提供了编译时类型安全监测机制,该机制允许我们在编译时检查类型安全,且所有的强制转换都是自动和隐式的,只要编译时不出现问题,运行时就不会出现ClassCastException(类型转换异常),可以极大地提高代码的可读性、复用性及安全性;
- 泛型可以用在类、接口和方法的创建中,被称为泛型类、泛型接口、泛型方法。
关于泛型的介绍,点击蓝字回顾:Java泛型基础最全详解,超级详细 ,这里就不再赘述了。
2 T , E , K , V , ?是什么
我们在定义泛型类,泛型方法,泛型接口的时候,经常会看见很多不同的通配符,比较常见的有: T,E,K,V , ? 。
实际上,这些通配符之间没有区别,只是一个约定俗成的字母标识,我们可以使用任意字母(大写)来定义.
例如:
将 T 换成 C
将 E 换成 D
将C换成 A , B , D,E,F,G,H
......等
这不会影响程序运行,只是可读性差一些而已。
通常情况下, T,E,K,V , ? 的类型表示如下:
代码示例:
public class NiuA<T> {
public List<T> list = new ArrayList<T>();
public static void main(String[] args) {
NiuA<String> na = new NiuA<String>();
na.list.add("hello");
System.out.println(na.list);
}
}
public class NiuB<N> {
public List<N> list = new ArrayList<N>();
|
public static void main(String[] args) {
NiuB<String> nb = new NiuB<String>();
nb.list.add("hello");
System.out.println(nb.list);
}
}
将 T 换成了N,在执行效果上没有任何区别。
总结
以上,是 对Java 泛型中的通配符 T,E,K,V,?的详解。建议大家按照约定俗成的规范编码,以增加代码的可读性。
我是大全哥,持续更新成体系的 Java 核心技术。知识成体系,学习才高效。
如果觉得有帮助,请顺手 点赞 支持下,谢谢。
我们下期见~
附泛型学习资料:
1 《泛型知识全景导图》
快速构建泛型知识体系,高清版本原图,几乎囊括了所有泛型核心知识点。
2 《大厂泛型面试真题26道》
精选大厂高频泛型面试题,都是我最新整理的,备面、复习时都可以查看。
--- end ---