在 Java 中创建泛型方法2025年6月19日 | 阅读 6 分钟 Java 是一种非常流行的面向对象编程语言,用于创建各种应用程序。Java 编写泛型方法的能力是其最强大的功能之一。任何可用于多种对象类型的技术都称为泛型。通过这种实用的技术,开发人员可以设计可重用代码。 在本教程中,我们将通过示例程序详细介绍如何在 Java 中编写泛型方法。我们还将涵盖一些关于泛型方法的重要概念。 在 Java 中创建泛型方法在 Java 中编写泛型方法时,需要使用尖括号语法来声明类型参数。类型参数是运行时提供给方法的实际类型的占位符。 声明泛型方法的语法 上面语法中的<T>表示正在声明一个名为 T 的类型参数。void 关键字表示该方法不返回值。方法参数接受通用类型 T,通过 methodName() 方法名指定。 例如,考虑以下输出对象数组的通用过程: GenericMethod1.java 输出 Integer Array: 1 2 3 4 5 String Array: Hello World ! 上面的示例中声明了一个名为 printArray 的泛型方法,它接受类型为 T 的数组。该方法通过 for-each 循环遍历数组,然后将每个元素打印到终端。 让我们看看如何使用不同类型的数组调用此泛型方法: GenericMethod2.java 输出 Integer array: 1 2 3 4 5 Double array: 1.1 2.2 3.3 4.4 5.5 String array: hello world java generic method 如您所见,printArray() 方法可以使用相同的实现来处理不同类型的数组。 带有多个类型参数的泛型方法在某些情况下,我们可能需要在泛型方法中声明多个类型参数。我们可以通过在尖括号中使用逗号分隔的类型参数列表来做到这一点。 这是一个接受两个类型参数并返回布尔值的泛型方法的示例: 在上面的示例中,我们声明了两个类型参数 T 和 U。该方法接受类型为 T 和 U 的两个参数,并使用 equals() 方法检查它们是否相等。该方法返回一个布尔值,指示参数是否相等。 让我们看看如何使用不同类型的参数调用此泛型方法: GenericMethod3.java 输出 true false true 在上面的示例中,我们使用三组不同的参数调用了 isEqual 方法——两个整数、两个字符串和两个双精度数。该方法可以使用相同的实现来处理所有这些类型的参数。 通配符类型参数将对象传递给泛型方法时,有时我们可能不确定其确切类型。当这种情况发生时,我们可以使用带有通配符的类型参数来接受任何类型的对象。 例如,考虑以下通用过程,它接受任何类型的对象的数组并返回数组的第一个元素: 在上面的示例中,我们声明了一个名为 getFirstElement 的泛型方法,该方法接受任何类型的 T 对象的数组。该方法返回数组的第一个元素,其类型为 T。 让我们看看如何使用不同类型的数组调用此方法: GenericMethod4.java 输出 First element of Integer array: 1 First element of Double array: 1.1 First element of String array: hello 在上面的示例中,我们使用三种不同类型的数组调用了 getFirstElement 方法——Integer、Double 和 String。该方法可以使用相同的实现来处理所有这些类型的数组。 类型擦除在使用 Java 中的泛型方法时,有一个重要概念需要牢记,那就是类型擦除。类型擦除是在编译时删除泛型类型信息并用实际类型替换它的过程。 例如,考虑以下泛型方法: 在上面的示例中,我们声明了一个名为 printType 的泛型方法,该方法接受类型为 T 的参数。该方法使用 getClass() 方法将参数的类打印到控制台。 现在,让我们看看如何使用不同类型的参数调用此方法: GenericMethod5.java 输出 Integer String Double 在上面的示例中,我们使用了三种不同类型的参数调用了 printType 方法——一个整数、一个字符串和一个双精度数。 这是因为参数的实际类型在编译时确定,并且泛型类型信息被擦除了。 类型擦除的一个后果是,我们无法使用某些依赖于泛型类型参数实际类型的操作。例如,我们无法创建类型为 T 的新对象,也无法调用未在 Object 类中定义的那些方法。 这是一个说明此点的示例: 在上面的示例中,我们尝试创建类型为 T 的新对象,并对类型为 T 的参数调用 someMethod() 方法。但是,这两种操作都会导致编译时错误,因为类型擦除导致在编译时不知道 T 的实际类型。我们也可以使用有界类型参数。有界类型参数允许我们为类型参数指定上界或下界,从而限制可与该方法一起使用的对象的类型。 例如,我们可以定义一个仅适用于实现 Comparable 接口的对象的泛型方法,该接口提供了比较相同类型对象的机制。这是一个例子: GenericMethod6.java 输出 true false true 为了确保类型参数 T 实现 Comparable 接口,我们在上面的示例中使用了有界类型参数>。有界类型参数允许我们创建类型更安全、对可与它们一起使用的对象类型提供更大保证的泛型方法。 总而言之,Java 的泛型方法为程序员提供了一种强大的技术来设计可以处理各种对象类型的代码,而无需创建冗余代码。通过使用类型参数,我们可以为所有对象类型创建一个单一的方法实现。在这篇文章中,我们学习了如何在 Java 中声明泛型方法,如何使用通配符类型参数来接受任何类型的对象,以及类型擦除如何影响泛型方法的行为。此外,还举例说明了泛型方法的用法。总而言之,泛型方法是 Java 程序员工具箱中的一个宝贵工具,并且了解如何正确使用它们对于开发清晰可维护的代码至关重要。 |
提供的字符串的任务是在 Java 中将一个新字符串插入到给定字符串的特定索引处。示例 1:输入:StringOriginal = "Hello World",InsertedString = "Welcome To ",Atindex = 5 输出:插入另一个字符串后的字符串是 "Hello, Welcome To World." 示例 2:输入:StringOriginal...
5 分钟阅读
在 Java 中,布尔数据类型表示两个值之一:true 或 false。将布尔值转换为整数通常涉及将这些布尔值映射到整数,通常 true 映射到 1,false 映射到 0。这种转换在各种场景中都很有用,例如存储...
阅读 6 分钟
在本节中,我们将学习什么是奢侈数,并创建 Java 程序来检查给定数字是否为奢侈数。奢侈数 Java 程序经常在 Java 编码面试和学术中出现。奢侈数 一个自然数,其...
阅读 4 分钟
在任何编程语言中,程序都需要标识符来存储可在整个程序中使用的不同值。这些标识符就是变量。Java 中的变量是分配给存储在系统内存中的值的名称。该值可以在...
阅读 4 分钟
图像处理是一项用于对图像执行操作以增强图像或提取有用信息的技术。图像处理中的一项常见任务是将彩色图像转换为其负片。在本节中,我们将探讨如何使用 Java 来实现此目的。什么是...
阅读 4 分钟
我们的主要关注点是元音集,因为元音集对于许多字符串操作问题通常很重要,其中一个问题是识别包含 K 个不同元音的给定字符串的最长子字符串。这个问题...
阅读 6 分钟
Java 是一种著名且广泛使用的面向对象编程语言。它由 Sun Microsystems 于 1995 年开发。后来在 2009 年,Oracle Corp. 收购了 Java。在此期间,Java 也更改了其徽标。在本节中,我们将讨论 Java 的视觉识别,即...
阅读 3 分钟
什么是面向对象编程 (OOP)?面向对象编程具有广泛的影响,因为它在多个层面都很有吸引力,并有望实现更快、更便宜的开发和维护。它遵循自下而上的方法来开发应用程序。在本节中,我们将深入讨论什么是面向对象编程?面向对象编程 词语“面向对象”...
阅读 6 分钟
在本节中,我们将创建 Java 程序来查找 Java 中一个数字的各位之和。为了找到一个数字的各位之和,我们必须熟悉 Java 循环和运算符。查找步骤:输入任何整数...
阅读 6 分钟
在本节中,我们将学习什么是迷人数字,并创建 Java 程序来检查给定数字是否迷人。迷人数字程序经常在 Java 编码测试中出现。迷人数字将一个数字分别乘以二和三,...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India