当前位置: 首页 > article >正文

【JAVA】JAVA泛型的<T>一时在前面一时在很后面怎么理解

一、泛型的定义

   泛型是一种在编程语言中使用的概念,目的是让代码能够处理多种数据类型,而不仅仅是一种固定类型。通过使用泛型,可以编写更通用和灵活的代码,提高代码的可重用性和可读性。

        在使用泛型时,可以定义一个或多个参数,这些参数可以代表不确定的数据类型。在代码实现中,可以使用这些参数表示各种不同的数据类型,从而实现相同的功能逻辑。

        使用泛型可以避免在代码中重复编写相似的代码,同时还可以减少类型转换的错误和运行时错误。泛型的主要优势是在编译时进行类型检查,可以提前发现错误,而不是在运行时才发现。 

      

二、JAVA中是使用泛型的例子无处不在,如

声明一个泛型类

public class ResponseData<T> implements Serializable{}

只需要在类型后面加上一个<T> 就可以,在使用泛型就可以

  private T data;

编译器不会报错

上面是泛型类和泛型变量的声明,下面看看泛型方法的声明

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
 

看着两个方法直接就使用T 就行

下面再可看这两个


    public static <T> ResponseData<T> success() {
        return success(ResponseCode.SUCCESS);
    }

    public static <T> ResponseData<T> success(ResponseCode code) {
        return success(code, null);
    }
 

怎么有的<T>在ResponseData<T>之前,为什么不是直接 ResponseData<T>就可以。

其实这里ResponseData<T> 已经算是一个具体类型,所以需要将<T> 放在它的前面就行修饰。

如果放在后面是不是也行?经测试编译器报错,所以这里就有个矛盾ResponseData<T>是具体类型 再后面加 <T> 应该可以。

下面看看这几种泛型方法声明方式

public interface  EncryptDecryptInterface {
	    public <T> T encryptSelf();
	    public <T> T decryptSelf();

	    public <T> List<T>  encryptSelfList(List<T> c);
	    public <T> List<T>  decryptSelfList(List<T> c);
	    
	    public <T> T decryptSelfList(T c);
 
}

我们发现<T> 都放在类型之前,但是这里的  <T> T 其中的 T 不像List<T> 中的List可以导入, T变成了自定义类型,它可以用其他大写字母代替。所以这种规则让人看的云里雾里,<T> List<T> 前后两个<T> .


http://www.kler.cn/a/445551.html

相关文章:

  • 【Rust自学】4.4. 引用与借用
  • 数据压缩比 38.65%,TDengine 重塑 3H1 的存储与性能
  • 【python虚拟环境安装】linux centos 下的python虚拟环境配置
  • flutter 使用dio 请求go语言后台数据接口展示瀑布流图片
  • QML 粒子模拟
  • 数据特性库 前言
  • 基于海思soc的智能产品开发(巧用mcu芯片)
  • Mybatis映射关系
  • 【C++】sophus : rxso3.hpp 实现了 3D 空间中的旋转和缩放操作的 RxSO3 类 (二十一)
  • 利用PHP和phpSpider进行图片爬取及下载
  • SpringBoot+Vue3实现阿里云视频点播 实现教育网站 在上面上传对应的视频,用户开会员以后才能查看视频
  • 【信息系统项目管理师】高分论文:论信息系统项目的进度管理(人力资源管理系统)
  • 基于Python3编写的Golang程序多平台交叉编译自动化脚本
  • AlipayHK支付宝HK接入-商户收款(PHP)
  • Java-29 深入浅出 Spring - IoC 基础 启动IoC容器的方式 Java方式与Web(XML、配置)方式
  • 游戏渠道假量解决方案
  • sql-labs 练习笔记
  • 二叉搜索树Ⅱ【东北大学oj数据结构8-2】C++
  • PDFMathTranslate - 基于AI的双语对照 PDF 翻译工具
  • Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
  • 如何更改 maven 指定的 java 版本 set JAVA_HOME=C:\Program Files\Java\jdk1.8
  • Unity中对已经烘焙的物体进行复制却没有复制烘焙参数的处理
  • 【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的校园勤工助学招聘系统的设计与实现
  • git暂存
  • 论文解读之Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(CoT)
  • 【Spring框架 三】