Java多重边界语法为<T extends A & B & C>,其中A必须是类且排首位,B、C等为接口;因Java单继承多实现机制,类若非首项将编译失败。

多重边界的基本写法
Java 中自定义泛型时,若需同时满足多个类型约束(比如既是某个类的子类,又实现若干接口),就要用多重边界。语法是:<T extends A & B & C>。其中 A 必须是类或抽象类,且必须放在最前面;B、C 等后续部分只能是接口。
为什么类必须排在第一位
Java 规定一个类最多继承一个父类,但可实现多个接口。所以编译器要求:如果边界中包含类,它必须是第一个,否则会报编译错误。
- ✅ 正确:
<T extends Number & Comparable<T> & Serializable> - ❌ 错误:
<T extends Comparable<T> & Number>—— 编译失败
实际可用的组合方式
多重边界常见于需要兼顾“数值能力”和“比较/序列化行为”的场景。例如:
-
<T extends Number & Comparable<T>>:可用于既要做算术运算、又要排序的泛型方法 -
<T extends Runnable & AutoCloseable>:适合封装需执行又需自动释放资源的任务 -
<T extends AbstractList<String> & Cloneable>:限制为某具体抽象类子类且支持克隆
边界带来的能力提升
加了多重边界后,泛型类型 T 就能安全调用所有边界中声明的方法:
立即学习“Java免费学习笔记(深入)”;
- 有
Number边界 → 可调用doubleValue()、intValue() - 有
Comparable<T>边界 → 可调用compareTo() - 有
Serializable边界 → 可直接参与序列化流程,无需额外检查


















