在Java中,泛型函数是指可以处理不同类型参数的方法。要定义一个泛型函数,需要在方法名前使用尖括号<>
来声明泛型类型参数。这里有一个简单的例子,展示了如何定义一个泛型函数,该函数接受两个参数并返回它们的和:
public class GenericFunctionExample {
public static void main(String[] args) {
int intSum = add(1, 2);
System.out.println("Integer sum: " + intSum);
double doubleSum = add(1.0, 2.0);
System.out.println("Double sum: " + doubleSum);
}
// 定义一个泛型函数,接受两个类型为T的参数,并返回一个类型为T的结果
public static <T extends Number> T add(T num1, T num2) {
// 由于Java泛型擦除,无法直接对T类型的实例进行加法运算,需要将其转换为Number类型后再进行操作
double result = num1.doubleValue() + num2.doubleValue();
// 根据传入的具体类型,将结果转换回相应的类型
if (num1 instanceof Integer) {
return (T) Integer.valueOf((int) result);
} else if (num1 instanceof Double) {
return (T) Double.valueOf(result);
}
// 其他类型...
throw new IllegalArgumentException("Unsupported type");
}
}
在这个例子中,我们定义了一个名为add
的泛型函数,它接受两个类型为T
的参数,并返回一个类型为T
的结果。T
是一个泛型类型参数,它被限制为Number
类及其子类。这意味着你可以将Integer
、Double
等类型的对象传递给这个函数。
请注意,由于Java的类型擦除机制,我们无法直接对泛型类型的实例进行加法运算。因此,我们需要将T
类型的实例转换为Number
类型,然后再进行加法运算。最后,我们需要根据传入的具体类型将结果转换回相应的类型。