登录
首页 >  文章 >  java教程

Java 中的上限和下限泛型有什么区别?

时间:2024-10-16 13:04:10 324浏览 收藏

本篇文章给大家分享《Java 中的上限和下限泛型有什么区别?》,覆盖了文章的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

Java中上限和下限泛型用于限制泛型变量的类型。上限泛型(extends)指定泛型变量必须是特定类的子类或其本身,而下限泛型(super)指定泛型变量必须是特定类的超类或其本身。上限泛型示例:限定 MyBoundedBox<T extends Animal> 只能存储 Animal 或其子类。下限泛型示例:限定 MyBoundedBox<T super Number> 只能存储 Number 或其超类。

Java 中的上限和下限泛型有什么区别?

Java 中的上限和下限泛型

Java 中的泛型是一种安全类型化机制,它允许我们在编写代码时指定数据类型。上限和下限泛型是泛型的两种类型,它们用于对可以存储在泛型中的值的类型施加限制。

上限泛型

上限泛型使用 extends 关键字,并指定特定类的上限或通用超类。例如:

class MyBoundedBox<T extends Animal> {
  private List<T> animals;

  public void add(T animal) {
    animals.add(animal);
  }
}

在这个例子中,MyBoundedBox 类限制了其泛型参数 T,以便它只能是 Animal 类或其子类。

下限泛型

下限泛型使用 super 关键字,并指定特定类的下限或通用超类。例如:

class MyBoundedBox<T super Number> {
  private List<T> numbers;

  public void add(T number) {
    numbers.add(number);
  }
}

在这个例子中,MyBoundedBox 类限制了其泛型参数 T,以便它只能是 Number 类或其超类。

实战案例

以下是一个实战案例,展示了如何使用上限和下限泛型:

public class BoundedGenericsDemo {

  public static void main(String[] args) {
    MyBoundedBox<Dog> dogBox = new MyBoundedBox<>();
    dogBox.add(new Dog("Max"));

    MyBoundedBox<Number> numberBox = new MyBoundedBox<>();
    numberBox.add(10);
    numberBox.add(3.14);
  }
}

输出:

Max
10
3.14

在这个案例中,我们创建了两个受限的泛型 dogBoxnumberBoxdogBox 只能存储 Dog 及其子类,而 numberBox 只能存储 Number 及其超类。

本篇关于《Java 中的上限和下限泛型有什么区别?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>