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

点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!泛型是Java中一个非常重要的内容,对于Jav…

大家好,又见面了,我是全栈君。

点击上方☝Java编程技术乐园,轻松关注!

及时获取有趣有料的技术文章

做一个积极的人
编码、改bug、提升自己

我有一个乐园,面向编程,春暖花开!

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

泛型是Java中一个非常重要的内容,对于Java进阶学习是必须要掌握的知识点之所以说这个知识点重要,如果你有过阅读过一些开源框架的代码,那你一定会看到源码中有很多地方使用到了泛型。

随便举两个例子,一个List,一个Map。

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

看了上面的源码,简单聊一下泛型,也就是回顾一下泛型的相关知识,来源百度百科。

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。Java语言引入泛型的好处是安全简单。

在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。】

请大概记住上面这段中标粗的内容,记不住的话可以背下来。

下面来看看这些 T、E、K、V、?这些究竟是何方神圣?

其实这些全都属于java泛型的通配符,刚开始如果看到这么多通配符,可能觉得就够自己喝一壶的了,实际上这几个其实没啥区别,只不过是一个约定好的字母标识,不要害怕。其实也可以 使用大写字母A,B,C,D……X,Y,Z定义的,就都是泛型,把T换成A也一样,这里T只是名字上的意义而已。

•E – Element (在集合中使用,因为集合中存放的是元素),E是对各方法中的泛型类型进行限制,以保证同一个对象调用不同的方法时,操作的类型必定是相同的。E可以用其它任意字母代替•T – Type(Java 类),T代表在调用时的指定类型。会进行类型推断•K – Key(键)•V – Value(值)•N – Number(数值类型)•?- 表示不确定的java类型,是类型通配符,代表所有类型。?不会进行类型推断

简单举个栗子:

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

将T换成了N,在执行效果上是没有任何区别的,只不过我们约定好了T代表type,所以还是按照约定规范来比较好,增加了代码的可读性



泛型类定义

//紧跟类名后面
public class Test{}

泛型方法定义

//紧跟修饰符后面(public)
public T Test1(T t){}

?通配符使用

//变量赋值或变量声明时候使用
List<?> list;
List<? extends Number> uNumberList;
List<? super Integer> intgerList;

注:List<? extends T>和List <? super T>有什么区别?

List<? extends T>可以接受任何继承自T的类型的List,
List<? super T>可以接受任何T的父类构成的List。
例如List<? extends Number>可以接受List<Integer>或List<Float>。

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

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

三分钟学习Java泛型中T、E、K、V、?的含义欢迎长按下图关注公众号三分钟学习Java泛型中T、E、K、V、?的含义

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

后台回复【秘籍】,获取珍藏的武功秘籍!

一起来修炼三分钟学习Java泛型中T、E、K、V、?的含义

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

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

                      

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120999.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月28日 下午5:00
下一篇 2022年2月28日 下午5:00


相关推荐

  • pycharm设置python路径

    pycharm设置python路径步骤一 pycharm gt settingforNe 步骤二 settingsforN gt projectInter gt showAll gt Add

    2026年3月27日
    3
  • webdriver 下载_WebBrowser

    webdriver 下载_WebBrowserChrome:http://chromedriver.storage.proxy.ustclug.org/index.html

    2026年1月27日
    7
  • axis2开发webservice_docker映射出来端口访问不了

    axis2开发webservice_docker映射出来端口访问不了记录一次正式环境服务报错排查记录。某日被通知线上服务告警,错入日志全是Timeoutwaitingforconnection首先梳理项目架构,项目很简单,就是一个使用axis2构建的webserice的客户端开始从此段报错入手排查,定位到MultiThreadedHttpConnectionManager这个类的doGetConnection方法privateHttpConnectiondoGetConnection(HostConfigurationhostCo.

    2025年11月3日
    4
  • 【转载】100亿数据1万属性数据架构设计

    【转载】100亿数据1万属性数据架构设计

    2021年11月20日
    45
  • vb做动态爱心代码(c语言表白代码立体爱心)

    前几天给大家放一个C语言实现心形表白功能的程序,许多小白觉得有意思,今天给大家再放一个更炫酷的表白程序,有需要的童鞋拿去吧~先看看效果图吧:因为是动图,所以只能象征性给大家截图啦~怎么样?童鞋们,好看吗?实际运行起来更炫哦~想表白的小伙伴拿去吧~不谢不谢~咩哈哈哈!上源码!#include#include#include#defineI20#defineR340intmain…

    2022年4月16日
    131
  • 什么是工厂模式

    什么是工厂模式三种工厂模式的分析以及 C 实现以下是我自己学习设计模式的思考总结 简单工厂模式 用简单的话来说 工厂模式是工厂模式简单的一种 他可以用一些简单的方法去隐藏对象的细节 一般只需告诉工厂类所需的类型就可以 工厂类会返回你需要的产品类 但你在客户端看到的只是产品的抽象对象 不需要关心返回是什么类 客户端唯一知道的就是具体子类 也就是工厂子类 除了这一点 基本是达到依赖倒转原则的要求罢了 如果我

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号