gpt4 book ai didi

java - 关于 PECS java 泛型

转载 作者:行者123 更新时间:2023-11-29 09:50:45 26 4
gpt4 key购买 nike

阅读 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com