📅  最后修改于: 2023-12-03 14:43:01.711000             🧑  作者: Mango
在Java中,泛型可以使用有界类型参数来限制参数类型必须是某个类或其子类,或必须实现某个接口。这种机制称为有界类型参数。
定义有界类型参数时,需要在类型参数名后加上 extends
关键字,然后跟上限定类型。有两种形式:
限定类型为类或接口:
<T extends SomeClass>
<T extends SomeInterface>
<T extends SomeClass & SomeInterface> // 同时限定为某个类和某个接口
限定类型为类或接口且有多个父类:
<T extends A & B & C>
下面是一个使用有界类型参数的例子。假设有一个 Box
类,用于存储元素,我们希望只能存储实现了 Comparable
接口的元素,以便进行比较。
public class Box<T extends Comparable<T>> {
private T value;
public Box(T value) {
this.value = value;
}
public T getValue() {
return value;
}
public boolean isGreaterThan(Box<T> other) {
return value.compareTo(other.getValue()) > 0;
}
}
上面代码中,Box
类使用类型参数 T
,并限定 T
必须实现 Comparable
接口。这样,我们就可以在 isGreaterThan
方法中调用 value
对象的 compareTo
方法进行比较了。
extends
放在第一个限定类型后,并用 &
隔开。例如:<T extends A & B & C>
。<T extends List<String>>
。