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

createh53周前 (12-18)技术教程20



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

相关文章

三分钟学习Java泛型中T、E、K、V、?的含义

作者:Java武学秘籍来源:https://www.toutiao.com/i6735957103459959309/本文仅作分享,版权归原作者,如侵删泛型是Java中一个非常重要的内容,对于Java...

干货丨Java 泛型中super T和extends T的区别

代码中经常发现有List< super T>、Set的声明,是什么意思呢?< super T>表示包括T在内的任何T的父类,< extends T>表示包括T在内的...

Netty和Spring Boot框架实现JT/T 808部标协议的服务端程序分享

JT808-Server 是基于Netty和Spring Boot框架,实现了JT/T 808部标协议的服务端程序;整个项目分为三部分:1.以framework包为核心的,TCP/IP协议服务端,设计...

java高级用法之:JNA类型映射应该注意的问题

简介JNA提供JAVA类型和native类型的映射关系,但是这一种映射关系只是一个大概的映射,我们在实际的应用中还有很多需要注意的事项,本文将会为大家详细讲解在使用类型映射中可能会出现的问题。一起来看...

SpringBoot 2.5.5整合轻量级的分布式日志标记追踪神器TLog

TLog能解决什么痛点随着微服务盛行,很多公司都把系统按照业务边界拆成了很多微服务,在排错查日志的时候。因为业务链路贯穿着很多微服务节点,导致定位某个请求的日志以及上下游业务的日志会变得有些困难。这时...