Java中的泛型:泛型类、泛型方法、泛型通配符

泛型是Java中的一种强大的语言特性,可以让我们编写更加通用和安全的代码。在本文中,我们将介绍Java中的三种泛型使用方法:泛型类、泛型方法和泛型通配符。


泛型类

泛型类是一种具有泛型参数的类,可以用来创建具有不同类型参数的对象。在类名后面加上<T>来定义泛型参数,T可以是任何标识符,通常用大写字母表示。

public class Box<T> {
    private T t;

    public void set(T t) {
        this.t = t;
    }

    public T get() {
        return t;
    }
}

在上面的代码中,我们定义了一个Box类,它有一个类型为T的成员变量和两个方法:set和get。set方法用于设置成员变量的值,get方法用于获取成员变量的值。

泛型类可以用来创建具有不同类型参数的对象,例如:

Box<Integer> integerBox = new Box<>();
Box<String> stringBox = new Box<>();

在上面的代码中,我们创建了两个Box对象,一个是Integer类型的,一个是String类型的。可以看到,通过使用泛型类,我们可以在编译时就确保类型的安全性。


泛型方法

泛型方法是一种具有泛型参数的方法,可以用来处理不同类型的数据。在方法名前面加上<T>来定义泛型参数,T可以是任何标识符,通常用大写字母表示。

public <T> void printArray(T[] array) {
    for (T element : array) {
        System.out.print(element + " ");
    }
    System.out.println();
}

在上面的代码中,我们定义了一个printArray方法,它有一个类型为T的数组参数。该方法可以用来打印任何类型的数组。

泛型方法可以在调用时自动推断类型,例如:

Integer[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"Hello", "World"};

printArray(intArray);
printArray(stringArray);

在上面的代码中,我们调用了printArray方法,并传递了两个不同类型的数组。可以看到,由于我们使用了泛型方法,所以在调用时不需要显式地指定类型。


泛型通配符

泛型通配符是一种用来表示未知类型的通配符,可以用来处理不同类型的数据。在类型参数前面加上问号(?)即可定义泛型通配符。

有三种类型的泛型通配符:。其中,表示类型的上限为T,表示类型的下限为T,则表示任何类型。

public static double sumOfList(List<? extends Number> list) {
    double sum = 0.0;
    for (Number number : list) {
        sum += number.doubleValue();
    }
    return sum;
}

在上面的代码中,我们定义了一个sumOfList方法,它有一个类型为List<? extends Number>的参数。该方法可以用来计算任何类型的数字列表的总和。

泛型通配符可以用来处理不同类型的数据,例如:

List<Integer> integerList = Arrays.asList(1, 2, 3);
List<Double> doubleList = Arrays.asList(1.1, 2.2, 3.3);

System.out.println(sumOfList(integerList));
System.out.println(sumOfList(doubleList));

在上面的代码中,我们创建了两个不同类型的列表,一个是Integer类型的,一个是Double类型的。然后调用了sumOfList方法,并传递了这两个列表。可以看到,由于我们使用了泛型通配符,所以可以处理不同类型的列表。


总之,泛型是Java中的一种强大的语言特性,可以让我们编写更加通用和安全的代码。通过本文的介绍,希望读者可以更好地理解和使用Java中的泛型。

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论