Java泛型方法声明问号
1. 什么是Java泛型方法
Java泛型方法是指在方法声明中使用泛型类型参数的方法。泛型类型参数使用问号(?)表示,表示可以是任意类型。泛型方法允许在编译时检查方法参数和返回类型的类型安全性,同时提供了更大的灵活性。
2. 泛型方法的声明
泛型方法的声明包含以下几个部分:
public <T> void methodName(T param) {
// 方法体
}
<T>
:定义了一个类型参数T,可以是任意合法的Java标识符。void
:方法的返回类型,可以是任意的Java类型。methodName
:方法的名称,可以是任意合法的Java标识符。(T param)
:方法的参数列表,可以接受任意类型的参数。
3. 泛型方法的使用
泛型方法可以用于任意类型的方法调用,包括基本类型和引用类型。下面是一些使用泛型方法的例子:
3.1 泛型方法的调用
public class GenericMethodExample {
public static <T> void printArray(T[] array) {
for (T element : array) {
System.out.println(element);
}
}
public static void main(String[] args) {
Integer[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"Hello", "World"};
printArray(intArray);
printArray(stringArray);
}
}
上述例子中,printArray
方法接受一个泛型类型的数组,并使用增强的for循环遍历数组并打印每个元素。在main
方法中,分别传入了整数数组和字符串数组进行调用。
3.2 泛型方法的返回类型
public class GenericMethodExample {
public static <T> T getFirstElement(T[] array) {
if (array.length > 0) {
return array[0];
} else {
return null;
}
}
public static void main(String[] args) {
Integer[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"Hello", "World"};
Integer firstInt = getFirstElement(intArray);
String firstString = getFirstElement(stringArray);
System.out.println("First Integer: " + firstInt);
System.out.println("First String: " + firstString);
}
}
上述例子中,getFirstElement
方法接受一个泛型类型的数组,并返回数组的第一个元素。在main
方法中,分别传入了整数数组和字符串数组进行调用,并将返回结果赋值给不同的变量进行打印。
4. 泛型方法的类型限定
泛型方法还可以使用类型限定,限制泛型类型参数的范围。类型限定可以是接口、类或者其他泛型类型参数。
public class GenericMethodExample {
public static <T extends Number> double getAverage(T[] array) {
double sum = 0;
for (T element : array) {
sum += element.doubleValue();
}
return sum / array.length;
}
public static void main(String[] args) {
Integer[] intArray = {1, 2, 3, 4, 5};
Double[] doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5};
double intAvg = getAverage(intArray);
double doubleAvg = getAverage(doubleArray);
System.out.println("Integer Average: " + intAvg);
System.out.println("Double Average: " + doubleAvg);
}
}
上述例子中,getAverage
方法接受一个泛型类型的数组,并计算数组元素的平均值。通过使用extends
关键字将泛型类型参数限定为Number
类的子类,可以确保数组元素是数字类型。在main
方法中,分别传入了整数数组和浮点数数组进行调用,并将返回结果赋值给不同的变量进行打印。
5. 泛型方法的优点
泛型方法的优点主要有以下几个方面:
- 类型安全:泛型方法在编译时可以检查方法参数和返回类型的类型安全性