Java学习——泛型

Java泛型是Java语言中的一个特性,它允许你在类、接口和方法上定义类型参数。使用泛型可以使代码更加通用,减少代码重复,并在编译时提供更强的类型检查。下面分别介绍泛型类、泛型方法和泛型接口。

泛型类

泛型类是在类名后添加类型参数声明的类。这种类型参数可以在类的整个定义中使用,如构造方法、成员变量和普通方法中。

示例
public class Box<T> {private T t;public void set(T t) {this.t = t;}public T get() {return t;}
}

在这个例子中,Box类使用了类型参数T,这意味着它可以用来存储任何类型的对象。创建Box实例时,你可以指定具体的类型:

Box<Integer> integerBox = new Box<>();
integerBox.set(10);
Integer someInteger = integerBox.get();

泛型方法

泛型方法是在方法返回类型之前有一个类型参数声明的方法。这个类型参数可以在方法的参数类型、返回类型和局部变量类型中使用。

示例
public class Util {public static <T> void printArray(T[] inputArray) {for (T element : inputArray) {System.out.println(element);}}
}

这个printArray方法是一个泛型方法,它可以接受任意类型的数组并打印每个元素。调用泛型方法时,可以根据传递

Integer[] intArray = {1, 2, 3, 4, 5};
Util.<Integer>printArray(intArray); // 显式类型
Util.printArray(intArray); // 类型推导

的参数类型自动推导出具体的类型,也可以显式指定类型:

泛型接口

泛型接口与泛型类类似,是在接口名后添加类型参数声明的接口。这个类型参数可以在接口的方法中使用。

示例
public interface Pair<K, V> {public K getKey();public V getValue();
}public class OrderedPair<K, V> implements Pair<K, V> {private K key;private V value;public OrderedPair(K key, V value) {this.key = key;this.value = value;}@Overridepublic K getKey() {return key;}@Overridepublic V getValue() {return value;}
}

在这个例子中,Pair是一个泛型接口,它定义了两个类型参数KVOrderedPair类实现了Pair接口,并指定了键和值的类型。

注意事项

  • 使用泛型可以增加代码的复用性和类型安全,但也应避免过度使用。
  • 在泛型代码中,不能使用基本数据类型(如intdouble等),只能使用它们的包装类(如IntegerDouble等)。
  • 泛型信息在编译时会进行类型擦除,这意味着泛型类型参数在运行时并不保留具体的类型信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ap和ac的工作原理

让我们一步步解释无线网络中访问点 (AP) 和无线控制器 (AC) 的工作原理&#xff1a; 1. 访问点 (AP)&#xff1a; 访问点是无线局域网络 (WLAN) 中的关键组件之一&#xff0c;它充当无线设备&#xff08;如笔记本电脑、智能手机等&#xff09;和有线网络之间的桥梁。其工作原理…

Oracle开发和应用——PL/SQL语法2(游标及集合)

6.4.6. 游标 这里的游标(cursor),是指数据库开发中的游标,而且,这里所指的是显式定义的游标。因为,除了显式定义的游标,我们每条SQL语句也会隐式的定义、打开和关闭一个游标,其实质是一个带有指针的结果集。当我们按照顺序取出结果时,这个指针会按照从前到后的顺序移…

990-09产品经理:How project management benefits different teams 项目管理如何使不同的团队受益

Project management methods and tools can be deployed across all teams and industries to help improve efficiency and drive results. In this chapter, we’ll provide an overview of how PM benefits construction, IT, marketing, and operations teams. 项目管理方法…

解锁苏宁电商数据新纪元:关键字搜索API接口引领业务升级

苏宁关键字搜索API接口&#xff1a;电商数据探索的新篇章 一、引言 在电商领域&#xff0c;数据的重要性不言而喻。为了帮助开发者更高效地获取和利用电商数据&#xff0c;苏宁开放平台提供了关键字搜索API接口。本文将带你深入了解这一接口的技术细节&#xff0c;让你在电商…

如何获取pnpm存储目录

现在你可以做 得到&#xff1a;\path\to.pnpm-store\v3 pnpm store path注&#xff1a;从v7.0.0开始&#xff0c;pnpm 存储位于不同的文件夹中。它将位于$XDG_DATA_HOMELinux Linux : ~/.local/share/pnpm/store (default) Windows : C:\Users\YOUR_NAME\AppData\Local\pn…

设计模式--单例模式--懒汉饿汉

单例模式 单例模式(Singleton)&#xff0c;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 单例模式 通常我们可以让一个全局变量使得一个对象被访问&#xff0c;但它不能防止你实例化多个对象。一个最好的办法就是&#xff0c;让类自身负责保存它的唯一实…

selenium自动化测试如何定位一闪而过的元素,比如提示信息、提交按钮

这里以登录按钮为例 在当前页面按F12点击控制,在下方输入debugger&#xff0c;点击登录按钮后点击输入debugger的地方按回车&#xff0c;一闪而过的元素就会定住不动就可以定位了

golang中make和new的区别

参考链接 https://worktile.com/kb/ask/38441.html 在Go语言中&#xff0c;make和new都是用于创建数据结构的内置函数&#xff0c;区别&#xff1a; 分配内存的区别 返回类型的区别 初始化的区别 分配内存的区别 make 用于创建切片、映射和通道等 引用类型 的数据结构。new 用…

企业网站建设需要多少钱?定制开发费用报价在3000-4000元

建立一个网站需要多少钱&#xff1f; 网站建设的价格划分也有很多。 这里首先要提的是市面上常见的一种低成本建站方式——模板网站&#xff0c;就是那种直接制作网站原型就可以无限复制的网站。 或者可以在几分钟内建立一个由软件生成的网站。 成本低得惊人&#xff0c;从500元…

【C++那些事儿】C++入门 | 命名空间 | 缺省参数 | 引用 | 内联函数 | auto关键字 | 范围for循环 | nullptr

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C那些事儿 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 前言1. C关键字(C98)2. 命名空间2.1 命名空间定义2.2 命名空间使用 3. C输入&输出4. 缺…

Qt 使用MD5给数据加密方法

重点&#xff1a; 1.通常在存储密码的时候需要对数据进行加密&#xff0c;通常采用Md5进行加密。 //存储密码时候 //读取存储的用户名和密码, 密码是经过加密的 void TDialogLogin::readSettings() {QSettings settings; //创建QSettings对象bool savedsettings.value(&q…

PyPDF2:项目实战源码分享(PDF裁剪)

目录&#x1f4d1; 1. 背景&#x1f4d1;2. 源码模块解析&#x1f4d1;2.1 读取PDF页数2.2 获取指定页的宽高尺寸2.3 裁剪单页PDF2.4 批量裁剪PDF 总结&#x1f4d1; 1. 背景&#x1f4d1; 接PyPDF2模块推荐博文中提到的实际需求&#xff08;将银行网站下载来的多页且单页多张…

【More Effective C++】条款8:new和delete的理解

new&#xff1a;内建的操作符和sizeof一样&#xff0c;不能被改变意义&#xff0c;包含下面两个部分 调用operator new 分配足够的内存&#xff1b;在内存上调用构造函数&#xff0c;为对象赋初值&#xff0c;并将返回的指针转型为对象的类型。 程序员无法直接调用对象初始化…

LeetCode 热题 100 | 二叉树(一)

目录 1 基础知识 1.1 先序遍历 1.2 中序遍历 1.3 后序遍历 2 94. 二叉树的中序遍历 3 104. 二叉树的最大深度 4 226. 翻转二叉树 5 101. 对称二叉树 菜鸟做题&#xff0c;语言是 C 1 基础知识 二叉树常见的遍历方式有&#xff1a; 先序遍历中序遍历后序遍历…

基于YOLOv5+PySide6的火灾火情火焰检测系统设计深度学习

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;225火灾 获取完整源码源文件已标注的数据集&#xff08;1553张&#xff09;配置跑起来说明 可有偿49yuan一对一远程操作&#xff0c;在你电脑跑起来 效果展示&#xff1a; ​数据集在下载的文件夹&#xff1a;yolov5-5.0\…

2024寒假集训营第四场 I回头 -- 题解 (带路径修改的Dijkstra)

目录 回头&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 代码实现&#xff1a; 回头&#xff1a; 题目大意&#xff1a; 给你一个n个点m条边的带权有向图&#xff0c;你现在需要从第一个点走到第n个点&#xff0c;求最短路径&#xff0c;当无解时输出-1. 值得注意的…

CRF算法(Conditional Random Fields)揭秘

CRF基本介绍 在机器学习中&#xff0c;建模线性序列结构的方法&#xff0c;除了HMM算法&#xff0c;另一个重要的模型就是CRF。HMM为了降低模型复杂性&#xff0c;对观测变量做了独立假设(即隐状态之间有相关性&#xff0c;而观测变量之间没有相关性)&#xff0c;这在某种程度…

单机取证-信息安全管理与评估-2022年国赛真题-环境+wp

🍬 博主介绍 博主介绍:大家好,我是 Mikey ,很高兴认识大家~ 主攻:【应急响应】 【python】 【数字取证】【单机取证】【流量分析】【MISC】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步 作者水平有限,欢迎各…

HuggingFists系统功能介绍(2)--数据源账号

数据源 再次&#xff0c;我们进入“数据源”管理模块。该模块用于管理我们在进行数据处理或分析时所需要的所有数据源。在定义任何的数据流程读写工作之前&#xff0c;必须先通过数据源管理模块创建出对应的数据源。数据源可以是我们需要进行数据处理时&#xff0c;原始数据所在…

2024年软件测试岗位-面试

第一部分&#xff1a; 1、自我介绍&#xff1a;简历写到的快速描述&#xff0c;学校、学历、工作经验等&#xff08;注意&#xff1a;不要过度优化简历&#xff0c;你不写别人可能会问&#xff0c;但你写了别人一定会问&#xff01;&#xff09; 第二部分&#xff1a; 1、功能测…