public static void main(String[] args) {
// Object <- Fruit <- Apple <- RedApple
System.out.println(Apple.class.isAssignableFrom(Fruit.class));
System.out.println(Fruit.class.isAssignableFrom(Fruit.class));
System.out.println(Fruit.class.isAssignableFrom(Apple.class)); // apple 是 Fruit子类 // 协变
List<Apple> apples = new ArrayList<Apple>();
List<? extends Fruit> listfruits = apples;
// listfruits.add(new Apple());
// listfruits.add(new RedApple());
// listfruits.add(new Fruit()); // ERROR: 不能够往一个使用了? extends的数据结构里写入任何的值。
Fruit f = listfruits.get(0); // 逆变
List<Fruit> fruits = new ArrayList<Fruit>();
List<? super Apple> list2 = fruits;
// list2.add(new Fruit()); //ERROR
list2.add(new Apple());
list2.add(new RedApple());
// Fruit f = list2.get(0); //ERROR /*
存取原则和PECS法则
总结 ? extends 和 the ? super 通配符的特征,我们可以得出以下结论: 如果你想从一个数据类型里获取数据,使用 ? extends 通配符
如果你想把对象写入一个数据结构里,使用 ? super 通配符
如果你既想存,又想取,那就别用通配符。
这就是Maurice Naftalin在他的《Java Generics and Collections》这本书中所说的存取原则,
以及Joshua Bloch在他的《Effective Java》这本书中所说的PECS法则。
Bloch提醒说,这PECS是指”Producer Extends, Consumer Super”,这个更容易记忆和运用。
* */
}

  http://www.cnblogs.com/softidea/p/4106659.html

最新文章

  1. Saving the entire git diff between two commits in a text file
  2. iOS-网络基础
  3. mysql的多实例安装
  4. PHP采集程序中的常用函数
  5. Java用native2ascii命令做unicode编码转换
  6. Tiling Up Blocks_DP
  7. centos 7访问windows共享文件夹
  8. Binarized Neural Networks_ Training Neural Networks with Weights and Activations Constrained to +1 or −1
  9. JSthis对象
  10. Java泛型的定义以及对于&lt;? extends T&gt;和&lt;? super T&gt;
  11. Hadoop各种进程的配置文件及其位置说明
  12. 百度地图隐藏缩放控件比例尺Logo
  13. matlab函数每天进步一点点
  14. HttpClient和HttpURLConnection的使用和区别
  15. webpack4 系列教程(一): 打包JS
  16. 重写Override ToString()方法
  17. 使用ffmpeg 推流
  18. Win10系列:UWP界面布局基础1
  19. 在CentOS6.8系统上安装MySQL5.7(转)
  20. 说说SQL Server的数据类型

热门文章

  1. PHP通过PDFParser解析PDF文件
  2. LeetCode刷题笔记--Python--28. 实现strStr()
  3. android monitor 汉化 ddms
  4. 10.25 正睿停课训练 Day9
  5. Scrapy爬虫框架的安装
  6. js实现文字超出部分用省略号代替实例代码
  7. 机器学习笔记(4):多类逻辑回归-使用gluton
  8. POI设置excle单元格样式
  9. C#用WebBrowser与WIN API辅助模拟获取网站完整Cookie
  10. C#获取类名为Internet_Explorer_Server控件的内容