在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
類型,然后再進行加法運算。最后,我們需要根據傳入的具體類型將結果轉換回相應的類型。