泛型不是协变的1List<Object> 不是 List<String> 的父类型。 问号 类型通配符List 是任何泛型 List 的父类型,所以您可以将 List、List 或 List>> 代入方法参数是List地方 但是把List类型的变量赋给List后不是所有的操作都支持。因为list并不知道类型信息,所有与类型相关的方法不能工作,比如add(new Integer(1));然而不依赖与类型的方法仍然工作,比如clear() 泛型参数用在类上时,约束的是类中的所有用到它的方法;泛型参数用到方法级别时约束到的是方法级别的用以下方式申明 123public <T> T ifThenElse(boolean b, T first, T second) { return b ? first : second;} 调用时通过类型推理,用以下方式调用 123String s = ifThenElse(b, "a", "b");Integer i = ifThenElse(b, new Integer(1), new Integer(2)); 受限制的类型参数只允许用Number或者Number子类的类型参数。 1public class Matrix<V extends Number> { ... } 注意不用受限制的类型参数时,默认是从Object的继承的。即不用extends 语句时取出的都是Object 上限通配符和下限通配符上限通配符123interface Collection<V> { boolean addAll(Collection<? extends V>);} 该定义组合了通配符类型参数和有限制类型参数,允许您将 Collection 的内容添加到 Collection。允许加入V或者V的子类 下限通配符1Collection<? super Foo> 只有通配符可以具有下限。 可以加入V或者V的父类。下例中copyTo() 方法将 Bunch 的所有值复制到指定的集合中。不是指定它必须是一个 Collection,而可以指定它是一个 Collection<? super V>,这意味着 copyTo() 可以将 Bunch 的内容复制到 Collection 或 Collection,而不只是可以复制到 Collection。 12345class Bunch<V> { public void add(V value) { ... } public void copyTo(Collection<? super V>) { ... } ...} 除了jdk中collection api加入泛型支持,其他接口,类的泛型声明实现并不是很好理解接口 123public interface Comparable<T> { public boolean compareTo(T other);} 实现 12public class String implements Comparable<String> { ... } 在下例中,您定义了一个泛型方法,在类型 T 上泛型化,您约束该类型扩展(实现) Comparable。 123456public static <T extends Comparable<T>> T max(T t1, T t2) { if (t1.compareTo(t2) > 0) return t1; else return t2;} 调用 1String s = max("moo", "bark");文章作者: 老实文章链接: https://shidonghua.9631369.xyz/2017/02/11/201708/2017-02-11-iteye-2/版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 石头记!上一篇PMBOK 学习笔记PMBOK(Project Management Body of Knowledge)PMBOK Guide divides into 44 processes that fall into 5 process groups. 5 process groups are: Initiating:...下一篇设计原则SOLIDSRPA Single Responsibility Principle A class should have one, and only one, reason to change. OCPA module should be open for extension bu... 评论老实分享技术思考与实践记录文章508标签26分类115GitHub公告欢迎来到老实的博客!目录1. 泛型不是协变的2. 问号 类型通配符3. 泛型参数用在类上时,约束的是类中的所有用到它的方法;泛型参数用到方法级别时约束到的是方法级别的4. 受限制的类型参数5. 上限通配符和下限通配符5.1. 上限通配符5.2. 下限通配符6. 除了jdk中collection api加入泛型支持,其他接口,类的泛型声明实现并不是很好理解最新文章App Store 应用内支付如何创建优惠代码,别和付费应用促销代码搞混2026-06-03个人财务小助手-资产归聚和流水查询2026-05-31使用openclaw整合已有的个人博客网站2026-05-05AI时代:语言即世界,代码即方案2026-04-22支付宝基金断舍离2026-04-21排队给智谱Coding Plan送钱了2026-04-14苹果用户门禁卡之殇2026-04-11从Prompt到Harness:AI工程化的三重进化2026-04-07苹果设备内置大模型不可用2026-04-04苹果应用:通讯录助手2026-03-29搜索 数据加载中