深入理解Java泛型

慈云数据 2024-05-11 技术支持 89 0

Java泛型是在JDK 5中引入的一个强大的特性,它允许开发者在编译时提供类型安全的集合操作。泛型的本质是参数化类型,即在类或方法中使用一个或多个类型形参来定义,然后在创建类实例或调用方法时传入具体的类型参数。

深入理解Java泛型
(图片来源网络,侵删)

泛型的基本使用

泛型的基本语法如下:

_genericClass_ 或 _genericInterface_

这里的T是一个类型参数,可以是任何有效的类型名称。在类的内部,你可以把T当作一个普通的类型来使用。

深入理解Java泛型
(图片来源网络,侵删)

类型参数的类

public class Box {
    private T t;
    public Box(T t) {
        this.t = t;
    }
    public T get() {
        return t;
    }
}

类型参数的方法

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

泛型的类型推断

Java 7开始支持“钻石”语法,允许开发者在声明泛型实例时不必重复其类型参数,编译器能够根据上下文推断出具体的类型。

Box box = new Box("Hello World");
// 钻石语法
Box boxDiamond = new Box("Hello Diamond");

通配符

在某些情况下,你可能需要定义一个可以操作多种类型元素的泛型类或方法。这时可以使用通配符?来表示一个未知的类型参数。

限制通配符

public void processAny(List list) {
    for (Object obj : list) {
        // 只能读取数据,不能修改
        System.out.println(obj);
    }
}

上界限定通配符

public void processNumbers(List
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon