温馨提示×

java泛型函数怎么定义

小亿
85
2024-09-13 14:11:25
栏目: 编程语言
Java开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在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类及其子类。这意味着你可以将IntegerDouble等类型的对象传递给这个函数。

请注意,由于Java的类型擦除机制,我们无法直接对泛型类型的实例进行加法运算。因此,我们需要将T类型的实例转换为Number类型,然后再进行加法运算。最后,我们需要根据传入的具体类型将结果转换回相应的类型。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:c++ sfinae在泛型函数适配器设计中的作用

0