Java泛型与继承Java泛型与继承

Java 泛型与继承是泛型类型系统中一个重要的概念,可以让我们更加灵活地使用泛型。

在 Java 中,泛型类型可以进行继承,这意味着一个泛型类或泛型接口可以继承自另一个泛型类或泛型接口,并且可以继承其泛型类型参数。这样,子类可以继承父类的泛型类型参数,并添加自己的泛型类型参数,以实现更加灵活的泛型类型。

下面是一个简单的示例,说明 Java 泛型与继承的概念和原理:

public class Box<T> {
    private T value;

    public Box(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }

    public static void main(String[] args) {
        Box<Integer> intBox = new Box<>(1);
        Box<String> strBox = new Box<>("hello");

        System.out.println(intBox.getValue());  // 输出 1
        System.out.println(strBox.getValue());  // 输出 "hello"

        BoxPair<Integer, String> pair = new BoxPair<>(intBox, strBox);

        System.out.println(pair.getFirst().getValue());   // 输出 1
        System.out.println(pair.getSecond().getValue());  // 输出 "hello"
    }
}

class BoxPair<T1, T2> extends Pair<Box<T1>, Box<T2>> {
    public BoxPair(Box<T1> first, Box<T2> second) {
        super(first, second);
    }
}

class Pair<T1, T2> {
    private T1 first;
    private T2 second;

    public Pair(T1 first, T2 second) {
        this.first = first;
        this.second = second;
    }

    public T1 getFirst() {
        return first;
    }

    public T2 getSecond() {
        return second;
    }
}

在这个示例中,我们定义了一个泛型类 Box,其中的 T 是一个泛型类型参数。在类中,我们定义了一个属性 value,表示一个泛型类型的值,并提供了一个方法 getValue(),用于获取当前对象的值。

然后,我们定义了一个泛型类 BoxPair,它继承自另一个泛型类 Pair,并在其中添加了两个泛型类型参数 T1 和 T2。其中,Pair 类表示一对值的类型,而 BoxPair 类表示一对 Box 对象的类型。

在 main() 方法中,我们首先创建了两个不同类型的 Box 对象,并分别输出它们的值。然后,我们使用这两个 Box 对象创建了一个 BoxPair 对象,并输出了其中的两个值。我们可以看到,通过继承泛型类型参数,我们可以创建更加灵活的泛型类型,并且可以在不同的泛型类中进行嵌套和组合。