Java 泛型编程示例2024 年 9 月 10 日 | 阅读 7 分钟 泛型是Java编程语言于2004年引入的一种泛型编程的机制。借助泛型编程,开发人员可以创建处理多种数据类型的程序。它是一种有效的策略,可以提高代码的可读性、可维护性和可重用性。Java 5 中引入的泛型概念,是 Java 实现泛型编程的方式。在本篇文章中,我们将介绍 Java 泛型编程的概念、它的优点,并提供一个实现泛型的示例。 什么是泛型编程?程序员可以使用泛型编程的方法来创建不特定于任何一种数据类型的代码。代码可以被设计为处理各种数据类型。Java 中使用泛型来实现这一点。通过泛型,类和方法可以被一种或多种数据类型参数化,从而变得更加灵活和可重用。 Java 泛型编程的优点代码重用性:泛型编程允许一次编写代码,即可用于多种数据类型,从而减少了需要生成的代码量。代码现在更容易维护,重用性也更高。 类型安全:泛型提供编译时类型安全,这有助于在编码时捕获问题,而不是在执行后捕获。这样做可以使代码更加健壮,并降低生产错误的可能性。 提高可读性:泛型通过明确说明类或方法旨在处理的数据类型来提高可读性。因此,开发人员将更容易理解代码,从而降低了出错的风险。 Java 泛型编程示例让我们来看一个如何在 Java 中实现泛型编程的示例。在本例中,我们将创建一个名为 Box 的泛型类,它可以容纳任何类型的对象。 在此说明中,类型 T(可以是任何数据类型)被用来参数化 Box 类。该类提供的 setObject 和 getObject 方法可用于设置和获取 Box 中的 T 类型对象。 为了使用 Box 类,我们只需要创建一个 Box 类的实例并指定所需的数据类型。 在此示例中,我们已使用 Integer 数据类型构建了一个 Box 类的实例。通过使用 getObject 方法,我们能够检索 Box 的值,该值设置为 10。最后,将该值打印到控制台。 示例 1:用于对两个数字进行相加的泛型类在本例中,我们将创建一个名为 AddNumbers 的泛型类,它可以对任何数据类型的两个数字进行相加。然后,我们将创建该类的实例,并使用它们来对两个整数和两个双精度数进行相加。 AddNumbers.java 输出 Integer Result: 5 Double Result: 6.0 在此示例中,我们创建了一个名为 AddNumbers 的泛型类,它接受两个扩展自 Number 类的任何数据类型的参数。add() 方法会检查参数的类型并返回它们的总和。在 main 方法中,我们创建了具有整数和双精度参数的类的实例,并打印了相加的结果。 示例 2:用于查找最大值的泛型方法在本例中,我们将创建一个名为 findMax 的泛型方法,它可以查找实现 Comparable 接口的任何数据类型的数组中的最大值。然后,我们将创建整数数组和字符串数组,并使用该方法查找每个数组中的最大值。 FindMax.java 输出 Max Integer: 5 Max String: elephant 在此示例中,我们创建了一个名为 findMax 的泛型方法,它接受一个实现 Comparable 接口的任何数据类型的数组。该方法会对数组进行排序并返回最大值。在 main 方法中,我们创建了整数数组和字符串数组,并使用 findMax 方法查找每个数组中的最大值。 示例 3:用于打印数组的泛型方法在本例中,我们将创建一个名为 printArray 的泛型方法,它可以打印任何类型的数组。然后,我们将创建整数数组和字符串数组,并使用该方法打印每个数组。 PrintArray.java 输出 Integer Array: 1 2 3 4 5 String Array: cat dog elephant bird 在此示例中,我们创建了一个名为 printArray 的泛型方法,它接受任何类型的数组并打印数组中的每个元素。在 main 方法中,我们创建了整数数组和字符串数组,并使用 printArray 方法打印每个数组。 示例 4:用于对象对的泛型类在本例中,我们将创建一个名为 Pair 的泛型类,它表示一对对象。然后,我们将创建具有不同数据类型的类的实例,并使用它们打印每对对象的值。 Pair.java 输出 First Value: 10 Second Value: hello First Value: 3.14 Second Value: a 在此示例中,我们创建了一个名为 Pair 的泛型类,它接受任何类型的两个参数。该类具有用于获取对中第一个和第二个对象值的方法。在 main 方法中,我们创建了具有整数和字符串、双精度和字符数据类型的类的实例,并打印了每对对象的值。 示例 5:用于对对象进行排序的泛型接口在本例中,我们将创建一个名为 Sortable 的泛型接口,它表示一个可排序对象。然后,我们将创建一个实现 Sortable 接口的 Person 类,并使用它根据年龄对 Person 对象数组进行排序。 Person.java 输出 Before Sorting: [Name: John, Age: 20, Name: Mary, Age: 25, Name: David, Age: 18, Name: Sarah, Age: 22] After Sorting: [Name: David, Age: 18, Name: John, Age: 20, Name: Sarah, Age: 22, Name: Mary, Age: 25] 在此示例中,我们创建了一个名为 Sortable 的泛型接口,它有一个名为 compare 的方法。然后,我们创建了一个实现 Sortable 接口的 Person 类,并定义了 compare 方法来根据年龄比较两个 Person 对象。 在 main() 方法中,我们创建了一个 Person 对象数组,并在排序前打印了该数组。然后,我们使用 Arrays.sort() 方法,通过调用每对 Person 对象上的 compare 方法的 lambda 表达式来对数组进行排序。最后,我们打印排序后的数组。 在上面的示例中,我们演示了如何使用泛型编程根据特定字段(在本例中为 Person 类的 age 字段)对自定义类的对象进行排序。 结论开发人员可以使用强大的泛型编程方法来创建不特定于任何一种数据类型的代码。它提高了代码的可读性、可维护性和可重用性。Java 中的泛型通过允许类和函数接受一种或多种数据类型作为参数,提供了一种执行泛型编程的机制。泛型使程序员能够生成更灵活、可重用的代码,这些代码更易于维护,并且不易出错。 |
一个称为“好数”的特殊数学概念指的是每个数字都大于其右侧数字之和的数字。在此练习中,我们负责在 [L, R] 范围内查找并打印所有好数,同时省略任何...
5 分钟阅读
?在 Java 中将 double 转换为 String 是一项常见的任务,开发人员经常会遇到,尤其是在处理用户界面、文件输入输出或数据格式化时。Java 提供了多种实现此转换的方法,每种方法都有其自身的优点和用例。在此...
5 分钟阅读
在本节中,我们将学习什么是神秘数字,并创建 Java 程序来检查给定数字是否为神秘数字。神秘数字程序经常在 Java 编码测试和学术界中出现。神秘数字 如果一个数字 N 被称为...
阅读 3 分钟
Java 编程语言以其丰富的标准库而闻名,该库包含大量类和实用程序,有助于开发健壮高效的应用程序。在这些类中,System 类占有特殊的位置。它提供了访问系统...的访问权限。
阅读 3 分钟
图中进行环检测是一个基本问题,在实际应用中被广泛使用,并且是许多领域(如网络设计、社交网络分析以及系统中的环查找)的重要工具。无向图中的环是指当可能...
7 分钟阅读
Java KeyStore 是一个包含证书的文件。这些证书用于 Java 代码中。KeyStore 及其中的证书用于从 Java 代码建立安全连接。存储的证书可以有几种格式。Java KeyStore 表示……
阅读 4 分钟
这个问题是一个著名的优化问题,它使用动态规划来实现最大利润——钢筋切割问题。给定一根固定长度的钢筋,我们想切断这根钢筋以获得尽可能多的收益,而每段都有不同的价格,取决于...
阅读 4 分钟
Java 迭代器在遍历集合和提供访问元素的标准化方法方面起着至关重要的作用。然而,理解不同迭代器实现的性能影响可以显着影响代码的效率。在本文中,我们将深入探讨 Java 迭代器的世界,...
阅读 4 分钟
提供的字符串的任务是在 Java 中将一个新字符串插入到给定字符串的特定索引处。示例 1:输入:StringOriginal = "Hello World",InsertedString = "Welcome To ",Atindex = 5 输出:插入另一个字符串后的字符串是 "Hello, Welcome To World." 示例 2:输入:StringOriginal...
5 分钟阅读
?挑战在于使用 Java 语言确定两个日期之间的差异。给定两个日期,开始日期和结束日期,时间表示为字符串。示例 1:输入以下日期:开始日期 = 10/01/2018 01:10:20,结束日期 = 10/06/2020 06:30:50。输出:2,152 天,5,20,30 秒,或...
阅读 13 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India