泛型的上限下限
时间: 2023-07-08 10:15:09 浏览: 144
泛型的上限和下限是指在定义泛型时,对泛型的类型进行限制的方式。上限使用 extends 关键字,表示泛型的类型必须是指定类型或其子类型;下限使用 super 关键字,表示泛型的类型必须是指定类型或其父类型。例如:
```java
public class Example<T extends Number> {
// ...
}
```
上述代码中,泛型类型 T 的上限是 Number 类型,表示泛型类型必须是 Number 类型或其子类型。另外,下限使用的比较少,可以参考下面的示例:
```java
public class Example<T super Integer> {
// ...
}
```
上述代码中,泛型类型 T 的下限是 Integer 类型,表示泛型类型必须是 Integer 类型或其父类型。
相关问题
泛型上限和下限的用法
泛型上限和下限是Java中泛型的一种限制方式,用于限定泛型类型的范围。
上限通配符(extends):
当我们使用泛型上限时,可以指定一个类型参数的上界,表示该类型参数必须是指定的类型或其子类。语法如下:
```
public class MyClass<T extends SomeClass> {
// ...
}
```
在上面的示例中,`T`是一个类型参数,它必须是`SomeClass`类或其子类。
下限通配符(super):
当我们使用泛型下限时,可以指定一个类型参数的下界,表示该类型参数必须是指定的类型或其父类。语法如下:
```
public class MyClass<T super SomeClass> {
// ...
}
```
在上面的示例中,`T`是一个类型参数,它必须是`SomeClass`类或其父类。
使用泛型上限和下限可以提供更灵活的类型约束,使得代码更加安全和可复用。
java定义两个通用方法,方法功能自定义,分别使用限定泛型的上限和限定泛型的下限的形式,传入该方法的子类或父类参数,实现相关功能
在 Java 中,你可以利用泛型(Generics)的上下限(Bounds)来创建通用方法,这种设计允许你在不指定特定类型的情况下提供一种类型安全的方式。以下是定义两个通用方法的例子,分别使用了`extends`(上界)和`super`(下界):
```java
// 定义一个上界为父类或其子类的通用方法
public class BaseClass<T extends Comparable<T>> {
// 使用T作为泛型,它必须实现Comparable接口
public void sort(List<T> list) {
list.sort(Comparator.comparing(T::compareTo));
}
// 另一个例子,下界为某个具体的基类
public static <U super Number> void calculate(U num1, U num2, BinaryOperator<U> operation) {
// 这里U必须是Number的子类,可以做基本算术操作
System.out.println(operation.applyAsDouble(num1, num2));
}
阅读全文