泛型 ETKV

news/2025/2/27 1:48:50/

文章目录

    • 泛型类
    • 泛型方法
    • 泛型接口
    • 泛型通配符
    • 泛型的限定

常见的泛型标识符:
E:Element
T:Type
K:键值对的键
V:键值对的值

不同的泛型,在何时确定为具体?

泛型类

创建对象时,确定具体类型

public class TimeTest {public static void main(String[] args) {Student<Integer> student = new Student<>();}
}class Student<E> {private E e;public E getE() { return e; }public void setE(E e) { this.e = e; }
}

泛型方法

位置:传参括号中
1.非静态方法:方法内部的泛型,会根据类的泛型去匹配。
同上public void setE(E e) { this.e = e; }

2.静态方法:静态方法中的泛型,必须声明出自己独立的泛型。在调用方法时,才确认为具体。

public class TimeTest {public static void main(String[] args) {String[] arr1 = {"张三", "李四", "王五"};Integer[] arr2 = {11, 22, 33};Double[] arr3 = {11.1, 22.2, 33.3};printArray(arr1);printArray(arr2);printArray(arr3);}public static <T> void printArray(T[] arr) {System.out.print("[");for (int i = 0; i < arr.length - 1; i++) {System.out.print(arr[i] + ", ");}System.out.println(arr[arr.length - 1] + "]");}
}

泛型接口

  1. 实现类时,确定具体类型
  2. 实现类依旧没有指定具体类型,让接口的泛型跟着实现类的泛型,创建对象时才为具体。
public class TimeTest {public static void main(String[] args) {InterAImpl a = new InterAImpl();InterBImpl<String> b = new InterBImpl<>();}
}interface Inter<E> {void show(E e);
}class InterAImpl implements Inter<String>{@Overridepublic void show(String s) { }
}class InterBImpl<E> implements Inter<E>{@Overridepublic void show(E e) { }
}

泛型通配符

?,任意类型
有异常的风险,不推荐

泛型的限定

? extends Employee:Employee及其以下的子类
? super Employee:Employee及其以上的父类


http://www.ppmy.cn/news/1256473.html

相关文章

java+testng+selenium的自动化测试实例

前言 这是用testng框架加selenium做的一个UI自动化测试的项目 Java代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66…

python-GC机制、装饰器、生成器、迭代器、三元表达式、列表生成式、生成器表达式、函数递归、面向对象、

1 基础知识 1.1 GC机制 Python的垃圾回收&#xff0c;其实高级的语言都有自己的垃圾回收机制简称GC&#xff0c; python当中主要通过三种方式解决垃圾回收的方式&#xff0c;引用计数、标记清除、分代回收。引用计数&#xff1a;如果有新的引用指向对象&#xff0c;对象引用计…

Vue3自定义Hooks定义

在Vue3中&#xff0c;自定义Hooks的定义是通过创建一个函数来共享逻辑或状态&#xff0c;以便在多个组件之间重复使用。Vue3中的自定义Hooks与React中的自定义Hooks非常相似&#xff0c;但有一些细微的差别。 要定义一个自定义Hook&#xff0c;可以按照以下步骤进行操作&#x…

JavaScript变量的小驼峰命名法

什么是小驼峰命名法 JavaScript中变量的小驼峰命名法&#xff0c;一般指的是JavaScript的变量的名称或函数的名称采用大小写字母搭配的方式进行命名&#xff0c;比如&#xff1a;folowerName、studentAge&#xff0c;其中N和A是大写的。 小驼峰命名变量的用处是什么 浏览器执…

【腾讯云HAI域探密】- AIGC应用助力企业降本增效之路

一、前言&#xff1a; 近年来&#xff0c;随着深度学习、大数据、人工智能、AI等技术领域的不断发展&#xff0c;机器学习是目前最火热的人工智能分支之一&#xff0c;是使用大量数据训练计算机程序&#xff0c;以实现智能决策、语音识别、图像处理等任务。 作者也是经过了以…

第七章java(类与对象)

new 类型&#xff08;&#xff09;&#xff1a;对象 如Scanner 值&#xff1a;变量 2. 类型决定&#xff08;包括&#xff09;对象&#xff1a;&#xff08;特征属性&#xff1b;操作方法&#xff09; 如何创建类型&#xff1a;&#xff08;public 类型名 对象名&#x…

js获取当前时间,当日零点,前一周时间

项目场景&#xff1a; 根据时间进行数据的快捷筛选 解决方案&#xff1a; 1.获取当前时间和当日零点时间 //当日 $("#today").click(function () { var currentTime new Date(Date.now()); var formattedCurrentTime currentTime.toLocaleString(zh-C…

ROS第一个程序——helloworld

目录 一、工作空间的创建 1.创建工作空间并初始化 2.进入 src 创建 ros 包并添加依赖 二、C实现helloworld C源码实现 编辑 ros 包下的 Cmakelist.txt文件 进入工作空间目录并编译 执行 三、python实现helloworld 进入 ros 包添加 scripts 目录并编辑 python 文件 …