如何正确使用Java泛型extends

avatar
作者
猴君
阅读量:0

在Java中,extends关键字用于限制泛型参数的类型范围。它有两个主要用途:

  1. 限制泛型参数必须是某个类的子类或实现某个接口。
  2. 限制泛型参数必须是某个类的子类或实现某个接口,同时还可以指定上界,即泛型参数必须是某个类的子类、实现某个接口或者是这个类的子类与另一个类的交集。

下面是使用extends关键字的示例:

示例1:限制泛型参数必须是某个类的子类

public class GenericBox<T extends Number> {     private T value;      public void setValue(T value) {         this.value = value;     }      public T getValue() {         return value;     } } 

在这个例子中,GenericBox类是一个泛型类,它的泛型参数T必须是Number类的子类。这意味着你可以创建一个GenericBox对象来存储任何Number类型的值,如IntegerDouble等,但不能创建一个GenericBox对象来存储非Number类型的值。

示例2:限制泛型参数必须是某个类的子类,并指定上界

public class UpperBoundedGenericBox<T extends Number & Comparable<T>> {     private T value;      public void setValue(T value) {         this.value = value;     }      public T getValue() {         return value;     }      public int compareTo(UpperBoundedGenericBox<T> other) {         return this.value.compareTo(other.value);     } } 

在这个例子中,UpperBoundedGenericBox类是一个泛型类,它的泛型参数T必须是Number类的子类并且实现了Comparable<T>接口。这意味着你可以创建一个UpperBoundedGenericBox对象来存储任何Number类型的值,并且可以使用compareTo方法来比较两个UpperBoundedGenericBox对象中的值。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!