WeiG's blog
首页
  • 类目

    • Java
    • Mysql
  • 学习笔记

    • 《SpringBoot-学习笔记》
  • 大杂烩
  • Docker
  • Git
  • 博客搭建
  • 程序人生
  • 所思所想
  • 人生游记
  • 归档
  • 分类
  • 标签
收藏
关于我

Wei-G

即使再小的帆也可以远航!
首页
  • 类目

    • Java
    • Mysql
  • 学习笔记

    • 《SpringBoot-学习笔记》
  • 大杂烩
  • Docker
  • Git
  • 博客搭建
  • 程序人生
  • 所思所想
  • 人生游记
  • 归档
  • 分类
  • 标签
收藏
关于我
  • Java

    • 线程池的线程复用原理
    • 一次线上线程池任务事故
    • 分布式事务小结
    • 为什么重写equals一定要重写hashcode
    • 注解Data与EqualsAndHashCode的使用
    • java泛型的理解
  • Mysql

  • 学习笔记

  • 后端乱炖
  • Java
gangzi
2022-01-19
时间 2分钟

java泛型的理解

泛型的意思是说类型可以在以后指定,但是这仍然需要告诉编译器,我需要某个类型作为占位符,比如T

public List<T> fuck(T shit){
	。。。
}
1
2
3

然后编译器并不知道这个T是什么

所以需要在前面显示的声明一下(这就是为什么不能省略)

是申明T为泛型,以区别于类名。
public <T> List<T> fuck(T shit){
	...
}
1
2
3

共出现了三个T

  • 第一个是定义一个范型名为T来声明类型参数的,也可以为任何一个或多个字母
  • 后两个T是泛型的实现,都是在使用范型
    • 第二个T代表返回T类型变量
    • 第三个T是只接受T类型变量的可变参数(可变参数:一个或者多个,其实最后会被转化成数组)
public class A {
    案例1. public static <A> List<A> asList(A... a);
	案例2. public static List<A> asList(A... a);
}
1
2
3
4
  • 案例1中A为“泛型A”,参数可以传入任何类型对象的数组;
  • 案例2则不是,其中A为“类A”,参数只能传入“类A”的对象的数组。

案例1中使用泛型绝不是因为要使参数可以传入任意类型,如果仅仅是这样,直接用Object就可以了。

用泛型是因为可以使该方法的返回值成为一个指定类型的集合,这样再次使用该集合的时候就有一个明确的类型了,这使的在将来该类型发生改变的时候编译器会报错,提醒你做相应的修改,而不是让问题暴露在运行阶段。这是泛型的重要作用之一。

T 其实就是某class,而'<>'符号纯粹是一个标记符,因为返回类型不确定(可能有object,string,int等)所以使用 T 泛型代替了,只有在你调用的时候才能确定你想要返回的具体类型

#基础#泛型
上次更新: 2022/01/20, 14:59:41
注解Data与EqualsAndHashCode的使用
Mysql-索引

← 注解Data与EqualsAndHashCode的使用 Mysql-索引→

本站总访问量 次 | 本站访客数 人
Copyright © 2021-2022 Gang zi | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 生命绿
  • 收获黄
  • 天空蓝
  • 激情红
  • 高贵紫