首页 > 编程语言 >javase笔记5----泛型

javase笔记5----泛型

时间:2024-10-13 14:22:08浏览次数:7  
标签:idCard 通配符 接口 ---- 类型 泛型 javase public

泛型

简介

泛型是一种特殊的数据类型。 它是Java 的一个高级特性。定义一个语法结构时,不用指明具体类型,而是先定义一个类型变量,在真正使用的时候再确定该变量的具体类型。即类型参数化。

语法

泛型,定义在一对尖括号中,也是一个标识符,一般用在类名后,遵循大驼峰命名法。通常都是用一个大写字母。比如:

public class Student<T>{}

泛型的应用

泛型类的应用

将泛型用在类上时,这个类就叫做泛型类。 泛型定义在类名后

public class Person<T>{
    private T idCard;
    public Person(T idCard){
        this.idCard = idCard;
    }
//当一个子类继承带有泛型的父类时,一般情况下要给泛型参数赋值具体类名
class Student extends Person<Integer>{
    public Student(Integer inCard){
        super(idCard);
    }
}
//子类的泛型参数可以赋值给父类的泛型参数
class Teacher<E> extends Person<E>{
    public Teacher(E idCard){
        super(idCard);
    }
}

泛型接口的应用

将泛型用在接口上时,这个接口就叫做泛型接口。 泛型定义在接口名后。  用法和泛型类,一模一样。

泛型方法的应用

泛型不仅能用在类和接口上,还可以用在方法上。  需要把泛型定义在返回值类型前面。

 public static <T> boolean equals(T t1, T t2){
        return t1.equals(t2);
 }

泛型通配符

简介

泛型通配符用 ? 表示,代表不确定的类型,是泛型的一个重要组成。

在调用时,表示不关心具体类型。

也可以使用通配符规定调用时,传入的类型的范围,即上边界,和下边界。

上边界

代表类型变量的范围有限,只能传入某种类型,或者它的子类。

利用 <? extends 类名> 的方式,可以设定泛型通配符的上边界

public static void print(List<? extends Number> list){
    for(int i=0;i<list.size();i++){
        System.out.println(list.get(i));
    }
}

下边界

代表类型变量的范围有限,只能传入某种类型,或者它的父类。

利用 <? super 类名> 的方式,可以设定泛型通配符的下边界

public static void print2(List<? super Integer> list){
    for(int i = 0;i<list.size();i++){
        System.out.println(list.get(i));
    }
}

标签:idCard,通配符,接口,----,类型,泛型,javase,public
From: https://blog.csdn.net/weixin_70903041/article/details/141300223

相关文章

  • day40
    每日温度classSolution{public:vectordailyTemperatures(vector&temperatures){stackst;vectoranswer(temperatures.size(),0);st.push(0);for(inti=1;i<temperatures.size();++i){if(temperatures[i]<=temperatures[st.top()]){st.push(i)......
  • C++STL~~map
    文章目录序列式容器和关联式容器一、map的概念二、map的使用三、map&multimap的差异四、map的练习五、总结序列式容器和关联式容器序列式容器前面已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑......
  • day41
    接雨水classSolution{public:inttrap(vector&height){intret=0;stackst;st.push(0);for(inti=1;i<height.size();++i){if(height[i]<=height[st.top()]){st.push(i);}else{while(!st.empty()&&height[i]>height[st.to......
  • 18732 最短路问题
    ###思路1.**建模问题**:将车站和公交线路建模为图,其中车站是节点,公交线路是带权边。2.**选择算法**:使用Dijkstra算法求解从车站1到车站n的最短路径问题。3.**初始化**:创建一个优先队列(最小堆)来存储当前节点和到达该节点的最小花费。初始化所有节点的最小花费为无穷大,起......
  • 18747 关键路径
    ###思路1.**建模问题**:将项目的事件和活动建模为有向无环图(DAG),其中事件是节点,活动是有权值的边。2.**选择算法**:使用拓扑排序算法来确定节点的处理顺序,然后在拓扑排序的基础上计算最长路径。3.**初始化**:创建一个入度数组来记录每个节点的入度,并创建一个距离数组来记录......
  • 02 线性结构——数组(特性、优缺点、基本使用、可变长的动态数组)
    目录1数组基础知识1.1认识数组1.2数组的声明1.3 数组的特性2数组的优缺点2.1优点2.1.1查找容易2.1.2高效的访问和修改2.2缺点2.2.1插入和删除效率低2.2.2扩展相对繁琐3数组的基本使用3.1遍历数组3.2修改数组元素4可变长的动态数组4.1 实现原理......
  • NOIP 2015 信息传递
    描述有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息......
  • NOIP 2015 推销员
    描述阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有N家住户,第i家住户到入口的距离为Si​米。由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等。阿明会从入口进入,依......
  • 在 LaTeX 中,默认的 `enumerate` 环境会输出 “1. 2. 3.“ 这样的编号。如果你想将编号
    在LaTeX中,默认的enumerate环境会输出“1.2.3.”这样的编号。如果你想将编号格式改为(1)(2)(3)这种样式,你可以通过enumerate包进行自定义。在导言区导入enumerate包:\usepackage{enumerate}在enumerate环境中使用\renewcommand来自定义编号格式为带括号的样式......
  • 神奇的幻方 NOIP 2015 题解
    描述幻方是一种很神奇的 N×N 矩阵:它由数字 1,2,3,⋯⋯,N×N 构成,且每行、每列及两条对角线上的数字之和都相同。当 N 为奇数时,我们可以通过下方法构建一个幻方:首先将 1 写在第一行的中间。之后,按如下方式从小到大依次填写每个数 K(K=2,3,⋯,N×N) :若 (K−1)......