泛型的实际应用示例

泛型的实际应用示例

1. 集合框架中的泛型

在Java的集合框架中,泛型被广泛使用以确保类型安全并减少运行时错误。以下是一个使用泛型ArrayList的示例:

 

java

import java.util.ArrayList;
import java.util.List;
public class GenericCollectionsExample {
public static void main(String[] args) {
// 创建一个存储String类型对象的ArrayList
List<String> stringList = new ArrayList<>();
stringList.add("Hello");
stringList.add("World");
// 尝试添加非String类型对象将导致编译错误
// stringList.add(123); // 编译错误
// 遍历并打印列表中的元素
for (String s : stringList) {
System.out.println(s);
}
}
}
2. 泛型方法和类

泛型方法和类允许我们编写可重用的代码,这些代码可以处理多种数据类型。以下是一个泛型类的示例,该类表示一个“盒子”,可以容纳任何类型的对象:

 

java

public class Box<T> {
private T item;
public Box(T item) {
this.item = item;
}
public T getItem() {
return item;
}
public void setItem(T item) {
this.item = item;
}
// 示例:使用Box类存储和检索Integer和String对象
public static void main(String[] args) {
Box<Integer> intBox = new Box<>(123);
System.out.println("Integer in box: " + intBox.getItem());
Box<String> stringBox = new Box<>("Hello");
System.out.println("String in box: " + stringBox.getItem());
}
}
3. 泛型接口

泛型接口与泛型类和泛型方法类似,允许我们定义类型安全的接口。以下是一个泛型接口的示例,它表示一个可以存储和检索数据的仓库:

 

java

public interface Repository<T> {
T get(int id);
void put(int id, T item);
}
// 实现该接口的类需要指定具体的类型参数
public class StringRepository implements Repository<String> {
private Map<Integer, String> data = new HashMap<>();
@Override
public String get(int id) {
return data.get(id);
}
@Override
public void put(int id, String item) {
data.put(id, item);
}
}
// 使用StringRepository
public class RepositoryUsageExample {
public static void main(String[] args) {
Repository<String> repo = new StringRepository();
repo.put(1, "Hello");
System.out.println(repo.get(1)); // 输出 "Hello"
}
}
4. 泛型通配符

在处理泛型时,有时我们需要表示未知的类型,或者表示一个类型的超集或子集。Java提供了通配符(wildcards)来实现这一点。以下是一个使用泛型通配符的示例:

 

java

import java.util.List;
public class WildcardExample {
// 接收任何类型的List作为参数
public static void printList(List<?> list) {
for (Object item : list) {
System.out.println(item);
}
}
public static void main(String[] args) {
List<String> stringList = Arrays.asList("a", "b", "c");
List<Integer> intList = Arrays.asList(1, 2, 3);
printList(stringList); // 输出字符串
printList(intList); // 输出整数
}
}

以上示例展示了泛型在Java编程中的实际应用,包括集合框架、泛型方法、泛型类和泛型接口的使用,以及泛型通配符的概念。这些示例可以帮助我们更好地理解和应用Java中的泛型特性。

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

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

相关文章

【面试题】信息系统安全运维要做什么

信息系统安全运维是确保信息系统稳定、可靠、安全运行的一系列活动和措施。 其主要包括以下几个方面&#xff1a; 1.系统监控&#xff1a; 实时监测信息系统的运行状态&#xff0c;如服务器的性能指标、网络流量、应用程序的运行情况等。通过监控工具&#xff0c;及时发现系统…

企业数据治理的下一步是数据资产管理?

随着信息技术的飞速发展和数字化转型的深入推进&#xff0c;企业数据已成为驱动业务增长和创新的核心要素。当企业数据治理工作取得显著成效后&#xff0c;如何进一步发挥数据的价值&#xff0c;实现数据资产的有效管理&#xff0c;成为企业面临的重要课题。 数据治理的基石作用…

算法练习——函数、递归和递推

在此记录一些有关函数、递归和递推的问题。所有题目均来自洛谷的题单能力提升综合题单Part1 入门阶段 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) &#xff08;实际上都没有用递推做&#xff09; [NOIP2001 普及组] 数的计算 题目描述 给出正整数 n n n&#xf…

学习感悟丨在誉天学习数通HCIP怎么样

大家好&#xff0c;我是誉天学员的徐同学&#xff0c;学习的数通HCIP课程。 在学校的时候&#xff0c;听说下半年就要出去实习了&#xff0c;心中坎坷不安&#xff0c;现在我学到的知识远远不够的。然后就想着学点东西充实一下自己的知识面和专业能力&#xff0c;有一次和同学谈…

【漏洞复现】飞企互联——SQL注入

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据…

[图解] 向量数据库之何谓乘积量化器?

Product Quantization 在前面一节讲解了向量数据库索引相关的内容&#xff0c;那么本节将会讲解其中压缩方法的量化手段&#xff1a;乘积量化器。 简单来说将向量的所有维度划分为多个子空间&#xff0c;每个子空间一部分维度&#xff0c;然后每个子空间独立去找最近距离。例如…

haproxy实现代理和负载均衡

HaProxy介绍&#xff1a; haproxy是法国开发者威利塔罗在2000年使用C语言开发的一个开源软件&#xff0c;是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支持正则表达式及web状态统计&…

Numpy array和Pytorch tensor的区别

1.Numpy array和Pytorch tensor的区别 笔记来源&#xff1a; 1.Comparison between Pytorch Tensor and Numpy Array 2.numpy.array 4.Tensors for Neural Networks, Clearly Explained!!! 5.What is a Tensor in Machine Learning? 1.1 Numpy Array Numpy array can only h…

arthas监控工具笔记(一)

文章目录 启动 math-game启动 arthas查看 dashboard通过 thread 命令来获取到math-game进程的 Main Class通过 jad 来反编译 Main Class退出 arthas 界面linux服务器挂不上进程怎么办? 核心表达式变量loader 本次调用类所在的 ClassLoaderclazz 本次调用类的 Class 引用method…

信息学奥赛初赛天天练-39-CSP-J2021基础题-哈夫曼树、哈夫曼编码、贪心算法、满二叉树、完全二叉树、前中后缀表达式转换

PDF文档公众号回复关键字:20240629 2022 CSP-J 选择题 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 5.对于入栈顺序为a,b,c,d,e的序列&#xff0c;下列( )不合法的出栈序列 A. a&#xff0c;b&a…

螺旋矩阵问题C代码

给定一个n行m列的二维数组&#xff0c;要求按顺时针螺旋顺序输出矩阵中的所有元素&#xff0c;n和m小于等于10 如下图是一个三行四列的螺旋矩阵 要求输出 1 2 3 4 8 12 11 10 9 5 6 7 全局变量定义 int a[11][11]; int vis[11][11]; // 访问标记数组关键代码如下 int dx[] …

MySQL高级-MVCC-基本概念(当前读、快照读)

文章目录 1、MVCC基本概念1.1、当前读1.1.1、创建表 stu1.1.2、测试 1.2、快照读 1、MVCC基本概念 全称Multi-Version Concurrency Control&#xff0c;多版本并发控制。指维护一个数据的多个版本&#xff0c;使得读写操作没有冲突&#xff0c;快照读为MySQL实现MVCC提供了一个…

OpenCV cv::Mat到 Eigen 的正确转换——cv2eigen

在进行计算机视觉项目时&#xff0c;我们经常需要处理相机位姿的变换。最近&#xff0c;我在项目中遇到了一个看似简单但实际上颇具挑战性的问题&#xff1a;从 OpenCV 的 cv::Mat 格式转换到 Eigen 库的格式。这个过程中遇到了一些问题&#xff0c;但最终找到了一个稳健的解决…

镂空的文字?分享 1 段优质 CSS 代码片段!

大家好&#xff0c;我是大澈&#xff01; 本文约 800 字&#xff0c;整篇阅读约需 1 分钟。 每日分享一段优质代码片段。 今天分享一段优质 CSS 代码片段&#xff0c;实现 CSS 文字镂空的效果。 老规矩&#xff0c;先阅读代码片段并思考&#xff0c;再看代码解析再思考&#…

nginx本地域名配置

修改hosts文件&#xff08;仅限本地测试&#xff09;&#xff1a; 在Windows上&#xff0c;hosts文件位于C:\Windows\System32\drivers\etc\hosts。 打开hosts文件&#xff0c;添加一行&#xff1a;127.0.0.1 xxx.com &#xff08;xxx.com为自己设定的域名&#xff09; 如果修…

Leetcode3190. 使所有元素都可以被 3 整除的最少操作数

Every day a Leetcode 题目来源&#xff1a;3190. 使所有元素都可以被 3 整除的最少操作数 解法1&#xff1a;遍历 遍历数组&#xff0c;累加最少操作数&#xff0c;即 min(num % 3, 3 - num % 3)。 代码&#xff1a; /** lc appleetcode.cn id3190 langcpp** [3190] 使所…

uniapp+vue3开发微信小程序踩坑集

本文主要记录使用uniappvue3开发微信小程序遇见的各种常见问题及注意点。&#xff08;持续更新&#xff09; 问题&#xff1a; 自定义组件为什么有些样式加不上去 给自定义组件增加class的时候&#xff0c;有时候不生效有时候生效&#xff0c;一度让我怀疑自己记忆错乱。后来…

C++枚举

C枚举 枚举的基础用法不不再赘述枚举的三点问题1、作用域问题解决思路1解决思路2 2、隐式转换成int3、枚举变量的实际类型无法明确指定 枚举的基础用法不不再赘述 枚举的三点问题 1、作用域问题 举个例子&#xff0c;颜色有blue代表蓝色&#xff0c;心情有blue代表忧郁。 以…

mysql安装配置教程

mysql安装配置教程 MySQL是一个流行的关系型数据库管理系统&#xff0c;用于存储和管理数据。下面是简要的MySQL安装配置教程&#xff1a; 步骤1&#xff1a;下载MySQL 访问MySQL官方网站&#xff08;https://dev.mysql.com/downloads/mysql/&#xff09;下载适合您操作系统…

Java冒泡排序实现及应用解析

Java冒泡排序实现及应用解析 冒泡排序是计算机科学中最基本的排序算法之一&#xff0c;尽管它的效率不是最高的&#xff0c;但由于其实现简单&#xff0c;它在教学和某些特定场景下仍然具有不可替代的作用。本文将从Java语言的角度&#xff0c;深入探讨冒泡排序的基本原理、实…