2 分钟快速搞懂,Java 泛型中的通配符 T,E,K,V

createh55个月前 (12-18)技术教程47



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 ---

相关文章

升级IDEA后Lombok不能用了,如何解决?

今天到工作室比较晚,在电脑前吃着早饭,看到提示IDEA提示升级,寻思已经有好久没有升过级了。一样等着,就升级下吧。升级完毕重启之后,突然发现好多错误,原来的应用也没法启动了。仔细一看报错信息,是由于L...

为什么有很多人跑去日本当程序员?

看到这个问题的一瞬间,立马就想到我一学土木的朋友,他现在是在设计院一个月三四千的工资卖命,经常跟我说,他本科同专业的同学毕业自学编程,再加上因为沉迷二次元喜欢日语,日语水平也不错,现在找了个工作被外派...