欢迎访问宙启技术站
智能推送

Java中的泛型函数中的类型通配符详解

发布时间:2023-07-04 10:04:20

Java中的泛型函数中的类型通配符是一种特殊的类型参数,用于表示一个未知的类型。使用类型通配符可以增加泛型函数的灵活性,使其能够处理不同类型的参数。

Java中的类型通配符有两种形式:

1. 无限制通配符(Unbounded Wildcards):使用"?"表示,表示可以接受任意类型的参数。

2. 有限制通配符(Bounded Wildcards):使用"extends"和"super"关键字加上一个具体的类型,表示只接受某个范围内的类型参数。

无限制通配符的用法如下:

public static void printList(List<?> list) {
    for (Object obj : list) {
        System.out.println(obj);
    }
}

在这个例子中,printList函数接受一个List类型的参数,参数的类型可以是任意的。在函数内部,我们可以通过Object类型来处理参数。

有限制通配符的用法如下:

public static <T extends Number> double sumList(List<T> list) {
    double sum = 0;
    for (T num : list) {
        sum += num.doubleValue();
    }
    return sum;
}

在这个例子中,sumList函数接受一个List类型的参数,并且这个List中的元素类型必须是Number类型的子类。我们在函数的定义中使用了"extends Number"来限制参数的类型范围。在函数内部,我们可以通过Number类型来处理参数。

同时,还可以使用"super"关键字来表示一个下界限制。下界限制表示参数类型必须是指定类型的超类。

public static void addToList(List<? super Integer> list) {
    list.add(10);
}

在这个例子中,addToList函数接受一个List类型的参数,并且这个List的元素类型必须是Integer的超类。我们在函数的定义中使用了"super Integer"来限制参数的类型范围。在函数内部,我们可以将Integer类型的元素添加到参数中。

总的来说,Java中的泛型函数中的类型通配符是一种增加函数灵活性的工具。通过使用类型通配符,我们可以处理不同类型的参数,从而实现通用的函数功能。