标签:article net ret 地址 cti 方法 类型转换 dog 代码
一般我们看Java泛型好像是不支持协变或逆变的,比如前面提到的List<Object>和List<String>之间是不可变的。但当我们在Java泛型中引入通配符这个概念的时候,Java 其实是支持协变和逆变的。
看下面几行代码:
// 不可变List<Fruit>fruits =newArrayList<Apple>();// 编译不通过// 协变List<?extendsFruit>wildcardFruits =newArrayList<Apple>();// 协变->方法的返回值,对返回类型是协变的:Fruit->AppleFruitfruit =wildcardFruits.get(0);// 不可变List<Apple>apples =newArrayList<Fruit>();// 编译不通过// 逆变List<?superApple>wildcardApples =newArrayList<Fruit>();// 逆变->方法的参数,对输入类型是逆变的:Apple->FruitwildcardApples.add(newApple());可见在Java泛型中通过extends关键字可以提供协变的泛型类型转换,通过supper可以提供逆变的泛型类型转换。
--------------------- 本文来自 OkidoGreen 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/z69183787/article/details/51598355?utm_source=copy
标签:article net ret 地址 cti 方法 类型转换 dog 代码
原文地址:https://www.cnblogs.com/feng9exe/p/9760187.html