在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 staticT 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
类型,然后再进行加法运算。最后,我们需要根据传入的具体类型将结果转换回相应的类型。