泛型(Java)

news/2024/9/28 23:46:10/

1.泛型:

        将数据类型作为参数进行传递。(传递的数据类型必须是引用数据类型)

        本质是参数化类型。

        泛型集合:可以约束集合内的元素类型

        典型泛型集合ArrayList<E>、HashMap<K,V>

        <E>、<K,V>表示该泛型集合中的元素类型泛型集合中的数据不再转换为Object。

2.泛型接口

        泛型接口:

                在接口定义时使用一个或多个类型参数(通常用尖括号<>括起来),这些类型参数可以用于接口的方法签名中,以提供更强的类型安全性和灵活性。

        例:

        当我们对商品类(Goods)和用户类(User)进行增删改查操作,我们需要建立单独Server类来实现这些功能,这样会导致我们建的项目比较多,因此我们将这些功能写在一个接口中,在创建各自的业务类实现该接口。

        Server接口: 

                

        UserServer类实现接口:        

                

        GoodsServer类实现接口:

                

3.泛型类

        泛型类:

                指在类的定义中使用一个或多个类型参数(通常用尖括号<>括起来),这些类型参数可以用于类的成员变量、构造函数和方法中。通过这种方式,泛型类可以处理不同类型的数据,而无需为每种数据类型创建单独的类。

        例:

java">public class Student<K,V> {public K key;public V value;public void set(K k,V v){this.key = k;this.value = v;}
}public class Test {public static void main(String[] args) {Student<String,Integer> s = new Student();//通过new对象来指定key和value的数据类型}
}

4.泛型方法

        泛型方法:

                指在方法的定义中使用一个或多个类型参数(通常用尖括号<>括起来),这些类型参数可以用于方法的返回值类型和参数列表中。

java">public <T> void checked(T t){System.out.println(t+"类型");
}s.checked("String");//调用checked方法,参数填什么类型,方法的参数类型就是什么类型

5.<? extends T>和<? super T>

        <? extends T>:

                必须是T类或是子类,限制add功能,但可以赋值给list。

        <? super T>:

                =当前类和父类,add当前类及其子类,限制get功能,get调用返回Object。

        List<? extends T> list1 限制了 add 功能,是因为编译器无法确定列表中的实际元素类型,并且为了确保类型安全,它禁止向此类列表添加任何元素(除了 null)。若要添加可向list添加值,再将list赋给list1。

        例:

        ​​​​​​​        

                List<? extends T>限制类型和add方法.

        ​​​​​​​        

                List<? extends T>限制类型和get方法(但返回是Object类型)。

        ​​​​​​​        ​​​​​​​


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

相关文章

Tableau|一入门

一 什么是BI工具 BI 工具即商业智能&#xff08;Business Intelligence&#xff09;工具&#xff0c;是一种用于收集、整理、分析和展示企业数据的软件系统&#xff0c;其主要目的是帮助企业用户更好地理解和利用数据&#xff0c;以支持决策制定。 主要功能&#xff1a; 1.数据…

NLP-transformer学习:(7)evaluate实践

NLP-transformer学习&#xff1a;&#xff08;7&#xff09;evaluate 使用方法 打好基础&#xff0c;为了后面学习走得更远。 本章节是单独的 NLP-transformer学习 章节&#xff0c;主要实践了evaluate。同时&#xff0c;最近将学习代码传到&#xff1a;https://github.com/Mex…

人工智能助力阿尔茨海默症治疗:微软与上海精神卫生中心的新研究

最近&#xff0c;微软研究院与上海市精神卫生中心合作&#xff0c;基于微软 Azure OpenAI 服务中的多模态大模型&#xff0c;开发了一种名为“忆我”&#xff08;ReMe&#xff09;的个性化认知训练框架。这一创新项目旨在通过数字化手段扩展自动化认知训练的范围&#xff0c;为…

网络原理 - TCP/IP

文章目录 传输层UDP协议TCP协议TCP协议的核心机制确认应答机制超时重传机制连接管理三次握手四次挥手 滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流粘包问题 异常情况 小结 网络层IP协议IP地址不够用的问题一、动态分配IP地址二、 NAT机制(网络地址映射)三、使用IPv6 地…

智能工牌如何通过自然语义处理技术帮助企业提高业务复盘效率?

在数字化转型的大潮中&#xff0c;企业不断寻求新的工具和技术来优化运营流程、提升工作效率。智能工牌作为一种新兴的技术解决方案&#xff0c;正在逐渐改变企业的管理方式&#xff0c;特别是在销售和服务领域。本文将探讨智能工牌如何利用自然语义理解技术来帮助企业提高业务…

【图文详解!】u盘拷贝文件管控如何实现?禁止U盘拷贝电脑文件的三大秘诀!

“数据如黄金&#xff0c;防护需用心。” 在当今信息化时代&#xff0c;数据的安全性和隐私性显得尤为重要。 U盘已成为我们日常工作中不可或缺的工具。然而&#xff0c;U盘的便携性也让它成为数据泄露的主要途径之一。 因此&#xff0c;为了保障数据安全&#xff0c;我们需要…

【机器学习】生成对抗网络(GAN)——生成新数据的神经网络

生成对抗网络&#xff08;Generative Adversarial Networks&#xff0c;简称GAN&#xff09;是一种创新的神经网络结构&#xff0c;近年来在机器学习和人工智能领域引起了广泛的关注。GAN的核心思想是通过两个神经网络的对抗性训练&#xff0c;生成高质量的、与真实数据相似的新…

el-input仅限输入数字 (输入框仅支持输入数字)

需求&#xff1a;日常开发中会遇到输入框只能输入数字的功能。常用的方法有下面几种 方式1 (将输入框类型改成number) <el-input v-model"number" type"number"/>方式2 (使用正则控制) 推荐使用该方式 <el-input v-model"value1" pla…