**泛型上限(Upper Bound of Generics)**通常出现在支持泛型(Generics)的编程语言中,比如 Java、Kotlin、C#(概念类似) 等。它的作用是:限制泛型类型参数必须是指定类型或其子类型。
在没有上限的情况下,泛型可以接收任意类型,但这会导致:
通过设定上限,可以:
<T extends Number>
含义:
T 必须是
Number或Number的子类(如 Integer、Double)
示例:
public <T extends Number> double sum(T a, T b) {
return a.doubleValue() + b.doubleValue();
}
✅ 可以使用 Number 的方法
❌ 不能传 String
<T extends Number & Comparable<T>>
含义:
T 必须既是 Number 的子类,又实现了 Comparable
用于泛型集合或变量声明:
List<? extends Number> list;
含义:
list 可以指向
List<Integer>、List<Double>等
⚠️ 限制:
Number n = list.get(0); // ✅
list.add(1); // ❌
fun <T : Number> sum(a: T, b: T): Double {
return a.toDouble() + b.toDouble()
}
class Box<out T : Number>
| 类型 | 含义 | 示例 |
|---|---|---|
| 上限 | 必须是某类或其子类 | ? extends Number |
| 下限 | 必须是某类或其父类 | ? super Integer |
泛型上限就是:给泛型类型“封顶”,只允许它是指定类型或其子类型,从而保证类型安全并可使用上限类型的方法。
如果你愿意,我也可以用 图解 / 面试题 / 和 PECS 原则 再深入讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。