Java泛型 <T> T、 T、<T>的用法

news2024/11/25 19:46:12

我们聊聊Java泛型中的 T 是什么?

T 在Java泛型中,被称作类型变量。那么什么又是类型变量?

类型变量在整个类的定义中用于指定方法的返回类型,同时也可以指定字段和局部变量的类型,我们可以用具体的类型来替换类型变量来实例化泛型类型。

如果我们经常看源码,就能看到很多类似于T这种类型变量,简单介绍一下这些类型变量分别代表什么含义。

Ⅰ、T、U、S:表示任意类型

Ⅱ、K:表示键类型

Ⅲ、V:表示值类型

Ⅳ、E:表示集合元素类型

Ⅴ、N:表示数字类型

了解完这些类型变量的含义后,我们回归正传, T 、T、 到底在用法上有什么区别?

样例代码

public class GenericMethod {
    public static void main(String[] args) {
        Double[] num = {1.11, 2.22, 3.33, 4.44, 5.55, 6.66};
        String[] str = {"Hello", "World", "你好", "世界"};
 
        Generic01 generic01 = new Generic01();
        generic01.toGeneric01(num);
        generic01.toGeneric01(str);
 
 
        Generic02<Double> doubleGeneric02 = new Generic02<>();
        doubleGeneric02.toGeneric02(num);
        Generic02<String> doubleGeneric03 = new Generic02<>();
        doubleGeneric03.toGeneric02(str);
    }
}
 
class Generic01 {
    public <T> T toGeneric01(T[] arr) {
        return arr[arr.length - 1];
    }
}
 
class Generic02<T> {
    public T toGeneric02(T[] arr) {
        return arr[arr.length - 1];
    }
}
 
class Generic03 {
    public <T> void toGeneric03(T[] arr) {
        T t = arr[arr.length - 1];
    }
}

上面的样例测试中,我分别编写了两个类 Generic01 和 Generic02。Generic01类 编写的方法的返回值样式为 T,Generic02类 编写的方法返回值的样式为 T。在编写的时候发现,如果方法的返回值写成 T,那么这个类必须为泛型,简单来说就是 Generic02类 后面必须加上 ,否则会报错!

报错如下
在这里插入图片描述
Generic02类加上后,那么我们在通过此类调用方法时,就必须传入类型,比如Integer、Double、String、我们自定义的类等等一些类,而方法返回为 T 的 Generic01类 则无需知道类型,传入即可~

在这里插入图片描述
谈论完Generic01和Generic02后,我们来说说Generic03是什么含义?

Generic03方法
public 中的这个 T 是修饰符的功能,代表是个泛型方法,与static修饰静态方法一个意思,但是,这里的并不是返回值类型,而是表示这里传入的参数可以是泛型或者下面定义的变量可以是泛型,在这里的目的是为了确保参数中可以出现T这种数据类型或者方法中定义的变量可以是T这种数据类型。

总结 T、 、 T

T 代表
只能传入 T 类型的数据,也就是说,方法实例化的数据类型,就是 T 的数据类型。( 根据上面的代码理解也就是,如果Generic02,那么就限制 T 为 Double 类型。)

代表
表示修饰符的含义,代表这是一个泛型方法。作用是:可以传入的参数为 T 这种类型变量

T 代表
① 第一个 表示泛型 ② 第二个 T 表示返回的是 T 类型的数据(比如:Integer、Double、String 等等)③ 第三个 T 来限制传入的数据类型(比如:限制为数组、集合 等等)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/584687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库【数据操作】

这篇文章呢是小编对正在学习的数据库的实验内容进行一个简单的记录&#xff0c;以便后期复习&#xff0c;希望小编的这些例子也可以帮助到正在和我一样学习数据库的友友们哦&#xff5e; 实验目的&#xff1a; &#xff08;1&#xff09;掌握使用T-SQL插入数据&#xff0c;修…

Arthas

Arthas 概述 Arthas 是Alibaba开源的Java诊断工具&#xff0c;深受开发者喜爱。 当你遇到以下类似问题而束手无策时&#xff0c;Arthas可以帮助你解决&#xff1a; 这个类从哪个 jar 包加载的&#xff1f;为什么会报各种类相关的 Exception&#xff1f;我改的代码为什么没有…

无纸化、自动化、智能化|WMS系统升级你的仓储管理模式

随着物流行业的不断发展&#xff0c;现代仓储管理已经从传统的手工操作逐渐转向无纸化、自动化、智能化管理。WMS系统作为一种全新的仓储管理模式&#xff0c;正在逐步被企业所接受和运用。 什么是WMS系统&#xff1f; WMS系统全称为Warehouse Management System&#xff0c;即…

汇编寄存器之内存访问

1.内存中字的存储: 在CPU中用一个16位寄存器来存储一个字, 高8位存高字节,低8位存低字节 如AX寄存器存在一个字,那么AH存高字节,AL存低字节 在内存中存储字时是用两个连续的字节来存储字的, 这个字的低字节存在低单元,高字节存在高单元. 如下表示: 内存单元编号 单元中…

开发工程师-常用算法基本思想 -分类-时间复杂度与空间复杂度概述

文章目录 插入排序选择排序交换排序归并排序各种排序算法时间复杂度、空间复杂度以及稳定性分类 插入排序 1.基本思想&#xff1a;将一个数据插入到一个有序的数据列表&#xff0c;得到一个新的有序列表 2.分类&#xff1a;直接插入排序、希尔排序 选择排序 1.工作原理&…

机器学习基础知识之多模型性能对比评价方法

文章目录 1、交叉验证t检验2、Friedman检验与Nemenyi后续检验 在进行预测或分类对比实验时&#xff0c;通常需要比较两个或两个以上的模型性能&#xff0c;因此&#xff0c;下面将介绍两个常用的多模型性能对比评价方法&#xff0c;一种是交叉验证t检验&#xff0c;该方法主要用…

英语单词365-9

英语单词365-9 9.1 manipulate_哔哩哔哩_bilibili

网络安全就业会不会容易被淘汰?

先说结论&#xff1a;不会 作为一名资深的网络安全工程师&#xff0c;我的观点是网络安全是一个长期持续的领域&#xff0c;而不是一个很容易被淘汰的职业。可能会随着技术的进步和新的威胁的出现而有所改变&#xff0c;但作为一个专门从事网络安全领域的人员&#xff0c;我们…

SQL面试必备:100道高频考题解析

前言 在众多IT职场中&#xff0c;SQL技术一直是一个非常重要的技能点。如果你正在准备SQL相关的面试&#xff0c;那么这份“SQL面试 100 问”绝对是你不能错过的宝藏&#xff01; 这份清单涵盖了100道高频考题&#xff0c;从基础知识到复杂应用都有所涉及&#xff0c;帮助你全…

数据结构·第3章【栈和队列】

栈 顺序栈 栈&#xff08;Stack&#xff09;是限定仅在表的一端进行插入或删除操作的线性表。通常称插入删除的一端为栈顶&#xff08;top&#xff09;&#xff0c;另一端称为栈底&#xff08;bottom&#xff09;。 typedef struct{DataType data[StackSize];int top; }Se…

缩减虚拟机堆空间的方式,缓解32位cpu上虚拟内存地址空间限制导致的内存分配失败崩溃

缩减虚拟机堆空间的方式&#xff0c;缓解32位cpu上虚拟内存地址空间限制导致的内存分配失败崩溃 前言Matrix使用说明效果验证 前言 瑞芯微平台应用开发&#xff0c;目前RK3288芯片应用还是比较广泛&#xff08;成本低&#xff09;&#xff0c;它是一个32位cpu&#xff0c;并且…

Halcon中的一些3D算子

一、记录一些Halcon里的关于3D的算子 1.read_object_model_3d 从文件读取一个3d模型 如下图&#xff0c;读的一个ply文件出来是个3d点云模型 2.visualize_object_model_3d 交互式展示3d模型 即上个算子读出来后&#xff0c;通过这个算子可以把3d模型显示出来旋转、平移&am…

SpringFramework 中CollectionUtils 工具类的使用

CollectionUtils是Spring框架中的一个工具类&#xff0c;提供了一系列对集合的操作方法。 import org.springframework.util.CollectionUtils;import java.util.*;public class CollectionUtilDemo {public static void main(String[] args) {//判断一个集合或Map是否为空&…

OWASP ZAP alerts

前提 使用OWASP ZAP对网站进行安全扫描&#xff0c;扫描后发现一些警告。 使用警告名称在百度进行搜索就能看到在OWASP ZAP网站上对应警告的解释。 可以在如下地址输入alert查询 https://www.zaproxy.org/docs/alerts/ Missing Anti-clickjacking Header 见https://www.zap…

SQL Server 2008R2安装图文教程(附SQL Server下载安装包)

SQL Server 2008R2 安装教程 演示系统&#xff1a;Windows server 2008R2 安装包&#xff1a;下载传送门 下载并解压安装包&#xff0c;找到解压的安装包&#xff0c;双击【setup.exe】 如果是你的服务器没有安装.NET Framework 3.5&#xff0c;那会弹出个提示框&#xff0c;…

CODEC 基础知识

&#xfeff; ASDOUT : ADC data output  DSDIN : DAC data input  LRCK : Left/Right data alignment clock  SCLK : Bit clock &#xfeff; MCLK 256 LRCK 或者 MCLK384 LRCK different audio data formats:  I2S …

公司新来了个拿18K出来的测试,让我见识到了什么叫真正的测试扛把子...

今天上班开早会就是新人见面仪式&#xff0c;听说来了个很厉害的大佬&#xff0c;年纪还不大&#xff0c;是上家公司离职过来的&#xff0c;薪资已经达到中高等水平&#xff0c;很多人都好奇不已&#xff0c;能拿到这个薪资应该人不简单&#xff0c;果然&#xff0c;自我介绍的…

如何编写快速高效的SQL查询(四)——优化特定类型的查询与样例

这一节&#xff0c;我们将介绍如何优化特定类型的查询。 本节介绍的多数优化技巧都和特定的版本有关&#xff0c;所以对于未来MySQL的版本未必适用。毫无疑问&#xff0c;某一天优化器自己也会实现这里列出的部分或者全部优化技巧。 优化COUNT()查询 COUNT()聚合函数&#xf…

Hive安装部署

1、Hive安装地址 ①Hive官网地址 Apache Hive ②文档查看地址 GettingStarted - Apache Hive - Apache Software Foundation ③下载地址 Index of /dist/hive ④github地址 GitHub - apache/hive: Apache Hive 2、 安装Hive 1&#xff09;把apache-hive-3.1.3-bin.ta…

“AI换脸”诈骗背后,如何应对黑灰产使用手段?

目录 诈骗是如何发生的&#xff1f; AI换脸诈骗的操作防范 AI换脸的风险分析与技术防范 近日&#xff0c;警方通报了一起使用智能AI技术进行电信诈骗的案件。被骗者是福州市某科技公司法人代表郭先生&#xff0c;他通过微信视频接到自己好友的电话&#xff0c;对方佯装需要借…