泛型是Java中的一种强大的语言特性,可以让我们编写更加通用和安全的代码。在本文中,我们将介绍Java中的三种泛型使用方法:泛型类、泛型方法和泛型通配符。
泛型类是一种具有泛型参数的类,可以用来创建具有不同类型参数的对象。在类名后面加上<T>来定义泛型参数,T可以是任何标识符,通常用大写字母表示。
public class Box<T> { private T t; public void set(T t) { this.t = t; } public T get() { return t; } }
在上面的代码中,我们定义了一个Box类,它有一个类型为T的成员变量和两个方法:set和get。set方法用于设置成员变量的值,get方法用于获取成员变量的值。
泛型类可以用来创建具有不同类型参数的对象,例如:
Box<Integer> integerBox = new Box<>(); Box<String> stringBox = new Box<>();
在上面的代码中,我们创建了两个Box对象,一个是Integer类型的,一个是String类型的。可以看到,通过使用泛型类,我们可以在编译时就确保类型的安全性。
泛型方法是一种具有泛型参数的方法,可以用来处理不同类型的数据。在方法名前面加上<T>来定义泛型参数,T可以是任何标识符,通常用大写字母表示。
public <T> void printArray(T[] array) { for (T element : array) { System.out.print(element + " "); } System.out.println(); }
在上面的代码中,我们定义了一个printArray方法,它有一个类型为T的数组参数。该方法可以用来打印任何类型的数组。
泛型方法可以在调用时自动推断类型,例如:
Integer[] intArray = {1, 2, 3, 4, 5}; String[] stringArray = {"Hello", "World"}; printArray(intArray); printArray(stringArray);
在上面的代码中,我们调用了printArray方法,并传递了两个不同类型的数组。可以看到,由于我们使用了泛型方法,所以在调用时不需要显式地指定类型。
泛型通配符是一种用来表示未知类型的通配符,可以用来处理不同类型的数据。在类型参数前面加上问号(?)即可定义泛型通配符。
有三种类型的泛型通配符: extends T>、 super T>和>。其中, extends T>表示类型的上限为T, super T>表示类型的下限为T,>则表示任何类型。
public static double sumOfList(List<? extends Number> list) { double sum = 0.0; for (Number number : list) { sum += number.doubleValue(); } return sum; }
在上面的代码中,我们定义了一个sumOfList方法,它有一个类型为List<? extends Number>的参数。该方法可以用来计算任何类型的数字列表的总和。
泛型通配符可以用来处理不同类型的数据,例如:
List<Integer> integerList = Arrays.asList(1, 2, 3); List<Double> doubleList = Arrays.asList(1.1, 2.2, 3.3); System.out.println(sumOfList(integerList)); System.out.println(sumOfList(doubleList));
在上面的代码中,我们创建了两个不同类型的列表,一个是Integer类型的,一个是Double类型的。然后调用了sumOfList方法,并传递了这两个列表。可以看到,由于我们使用了泛型通配符,所以可以处理不同类型的列表。
总之,泛型是Java中的一种强大的语言特性,可以让我们编写更加通用和安全的代码。通过本文的介绍,希望读者可以更好地理解和使用Java中的泛型。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com