Java泛型方法是指在定义方法时使用泛型,这样可以使得方法可以接受不同类型的参数,并且返回不同类型的结果。它的优势在于可以减少代码量,提高代码复用性,并且能够有效地避免强制类型转换。
下面我们来看一个具体的例子:
public class GenericMethod { public staticvoid printArray(T[] array) { for (T element : array) { System.out.println(element); } } public static void main(String[] args) { Integer[] intArray = {1, 2, 3, 4, 5}; Double[] doubleArray = {1.1, 2.2, 3.3, 4.4}; Character[] charArray = {'H', 'E', 'L', 'L', 'O'}; System.out.println("整型数组元素为:"); printArray(intArray); // 传递一个整型数组 System.out.println("\n双精度型数组元素为:"); printArray(doubleArray); // 传递一个双精度型数组 System.out.println("\n字符型数组元素为:"); printArray(charArray); // 传递一个字符型数组 } }
上面的代码中定义了一个名为printArray()的泛型方法,该方法接受一个T 类型的数组作为参数,然后遍历该数组并打印出来。在main()方法中分别定义了三个不同的数据(Integer、Double、Character)作为测试用例,然后将这三者作为参数传递到printArray()方法中。最后我们就能看到打印出来的三者都是正常输出。
可以创建一个包含在非泛型类中的通用方法。
public class Main { static <T, V extends T> boolean isIn(T x, V[] y) { for (int i = 0; i < y.length; i++) { if (x.equals(y[i])) { return true; } } return false; } public static void main(String args[]) { Integer nums[] = { 1, 2, 3, 4, 5 }; if (isIn(2, nums)){ System.out.println("2 is in nums"); } String strs[] = { "one", "two", "three", "four", "five" }; if (isIn("two", strs)){ System.out.println("two is in strs"); } } }
上面的代码生成以下结果。
下面的代码声明一个 copyList()
通用方法。
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<String> ls = new ArrayList<String>(); ls.add("A"); ls.add("B"); ls.add("C"); List<String> lsCopy = new ArrayList<String>(); copyList(ls, lsCopy); List<Integer> lc = new ArrayList<Integer>(); lc.add(0); lc.add(5); List<Integer> lcCopy = new ArrayList<Integer>(); copyList(lc, lcCopy); } static <T> void copyList(List<T> src, List<T> dest) { for (int i = 0; i < src.size(); i++) dest.add(src.get(i)); } }
构造函数可以是通用的,即使它们的类不是。例如,考虑以下短程序:
class MyClass { private double val; <T extends Number> MyClass(T arg) { val = arg.doubleValue(); } void showval() { System.out.println("val: " + val); } } public class Main { public static void main(String args[]) { MyClass test = new MyClass(100); MyClass test2 = new MyClass(123.5F); test.showval(); test2.showval(); } }
上面的代码生成以下结果。
Java教程 -Java嵌套类在任何类外部声明的类是顶级类。嵌套类是声明为其他类或作用域的成员的类。有四种嵌套类:静态成员类 非静态...
JPA教程 - JPA列精度范围示例当将Java float或double值映射到数据库表列时,我们可以设置数字类型列的精度尺度。以下代码将浮点...
JPA教程 -JPA一对一延迟加载示例以下代码显示如何使用延迟加载设置执行一对一映射。@OneToOne(fetch=LAZY)private Department de...
JPA教程 -JPA 多对多连接表示例以下代码显示如何为多对多映射设置连接表。例子下面的代码来自PersonDaoImpl.java。package cn..c...