Java泛型类定义只支持extends上界约束,用于限定类型为某类子类或实现某接口,可组合多个接口但类必须在前;super下界仅适用于通配符,不可用于类声明。

Java 泛型边界在类定义中通过 extends(上界)或 super(下界)关键字对类型参数施加约束,确保传入的具体类型满足行为或继承要求。最常用的是上界约束,用于保证类型具备某些方法(如 compareTo())或属于某类体系。
用 extends 指定上界:限定为某类或其子类
这是类定义中最常见的边界写法,语法为 <t extends someclass></t> 或 <t extends someinterface></t>。它表示 T 必须是 SomeClass 的子类(含自身),或实现了 SomeInterface。
- 如果约束的是类,只能有一个,且必须写在最前面(例如
<t extends number></t>) - 如果约束的是接口,可多个,用
&连接(例如<t extends comparable> & Cloneable></t>) - 不能同时用
extends和super修饰同一个类型参数
用 super 指定下界:仅限于通配符,不用于类声明本身
注意:super 边界不能直接出现在泛型类的类型参数声明中(比如 class Box<t super string></t> 是非法的)。它只允许用于通配符类型,如 List super Integer>,常见于方法参数设计中,用于接收更宽泛的父类型实例。
- 泛型类定义时,
T super X语法不被支持 - 若需类似语义,应改用无界泛型 + 运行时检查,或通过方法级泛型 + 下界通配符实现
多重边界:组合能力增强类型安全
当需要类型同时满足多个条件时,可用 & 连接多个接口,最多一个类(放在最左):
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
立即学习“Java免费学习笔记(深入)”;
-
<t extends serializable comparable>></t>:T 必须可序列化且可比较 -
<t extends number runnable></t>:T 必须是 Number 子类,且实现了 Runnable - 接口顺序无关,但类必须排第一;否则编译报错
实际类定义示例
下面是一个带约束的泛型工具类:
public class MinFinder<T extends Comparable<T>> {
public T findMin(T[] array) {
if (array == null || array.length == 0) return null;
T min = array[0];
for (T item : array) {
if (item.compareTo(min) < 0) min = item;
}
return min;
}
}
使用时只能传入实现了 Comparable 的类型,如 Integer、String、自定义的 Person implements Comparable<person></person>,否则编译失败。

















