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

 更新时间:2023年12月24日 09:40:27   作者:凡客丶  
T在Java泛型中,被称作类型变量, 有的方法返回值是<T> T,有的是T,区别在哪里,本文主要介绍了Java泛型 <T> T、 T、<T>的用法小结,具有一定的参考价值,感兴趣的可以了解下

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

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

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

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

  • Ⅰ、T、U、S:表示任意类型
  • Ⅱ、K:表示键类型
  • Ⅲ、V:表示值类型
  • Ⅳ、E:表示集合元素类型
  • Ⅴ、N:表示数字类型

了解完这些类型变量的含义后,我们回归正传, <T> T 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> T,Generic02类 编写的方法返回值的样式为 T。在编写的时候发现,如果方法的返回值写成 T,那么这个类必须为泛型,简单来说就是 Generic02类 后面必须加上 <T>,否则会报错!

报错如下

在这里插入图片描述

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

在这里插入图片描述

谈论完Generic01和Generic02后,我们来说说Generic03是什么含义?

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

总结 T、 <T>、<T> T

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

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

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

到此这篇关于Java泛型 <T> T、 T、<T>的用法小结的文章就介绍到这了,更多相关Java泛型 <T> T、 T、<T>内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • JDK8中Optional类巧用之判空操作

    JDK8中Optional类巧用之判空操作

    善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅,这篇文章主要给大家介绍了JDK8中Optional类巧用之判空的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • 并行Stream与Spring事务相遇会发生什么?

    并行Stream与Spring事务相遇会发生什么?

    这篇文章主要介绍了并行Stream与Spring事务相遇会发生什么?文章主要解决实战中的Bug及解决方案和技术延伸,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Java List<JSONObject>中的数据如何转换为List<T>

    Java List<JSONObject>中的数据如何转换为List<T>

    这篇文章主要介绍了Java List<JSONObject>中的数据如何转换为List<T>问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Spring容器中已经存在的Bean替换示例

    Spring容器中已经存在的Bean替换示例

    这篇文章主要为大家介绍了Spring容器中已经存在的Bean替换示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 关于Guava缓存详解及使用说明

    关于Guava缓存详解及使用说明

    这篇文章主要介绍了关于Guava缓存详解及使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 关于maven环境的安装及maven集成idea环境的问题

    关于maven环境的安装及maven集成idea环境的问题

    Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。本文重点给大家介绍关于maven环境的安装及和idea环境的集成问题,感兴趣的朋友一起看看吧
    2021-09-09
  • Java中Arrays.asList()方法详解及实例

    Java中Arrays.asList()方法详解及实例

    这篇文章主要介绍了Java中Arrays.asList()方法将数组作为列表时的一些差异的相关资料,需要的朋友可以参考下
    2017-06-06
  • SpringBoot 项目使用hutool 工具进行 http 接口调用的处理方法

    SpringBoot 项目使用hutool 工具进行 http 接口调用的处理方

    在实际的开发过程中一个互联网的项目来说 ,有可能会涉及到调用外部接口的实际业务场景,下面通过本文给大家介绍SpringBoot 项目 使用hutool 工具进行 http 接口调用的处理方法,需要的朋友可以参考下
    2022-06-06
  • Java数据结构之并查集的实现

    Java数据结构之并查集的实现

    并查集是一种用来管理元素分组情况的数据结构。并查集可以高效地进行如下操作。本文将通过Java实现并查集,感兴趣的小伙伴可以了解一下
    2022-01-01
  • 教你用JDK编译Java文件的方法

    教你用JDK编译Java文件的方法

    这篇文章主要介绍了教你用JDK编译Java文件的方法,分步骤给大家介绍了设置环境变量的方法,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-01-01

最新评论