作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
阅读 Java Essentials,第 2 版,有一个称为 PECS 的规则用于方法参数中的类型安全。如果它产生你扩展,消耗你使用 super 。对不起,如果我定义错误,因为我不明白。
谁能阐明 Joshua Bloch 所说的生产者/消费者?
最佳答案
查看此 pdf其中有一系列幻灯片(搜索 PECS):
泛型是不变的
• 即List<String>
不是 List<Object>
的子类型
• 有利于编译时类型安全,但不够灵活
有界通配符类型提供额外的 API 灵 active
• List<String>
是 List<? extends Object>
的子类型
• List<Object>
是 List<? super String>
的子类型
所以
PECS — 生产者扩展,消费者 super
• 使用Foo<? extends T>
对于 T
制作人
• 使用Foo<? super T>
对于 T
消费者
仅适用于输入参数(不要使用通配符类型作为返回类型)。
假设您要向 Stack 添加批量方法:
void pushAll(Collection<? extends E> src);
//src is an E producer
void popAll(Collection<? super E> dst);
// dst is an E consumer
关于java - 关于 PECS java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535930/
我是一名优秀的程序员,十分优秀!