gpt4 book ai didi

java - 设计库时何时使用 PECS?

转载 作者:行者123 更新时间:2023-12-02 09:51:09 26 4
gpt4 key购买 nike

我正在开发一个大量使用函数式接口(interface)的库,目前正在纠结是否要申请 PECS或不:

Predicate<A>
Function<A,B>
BiFunction<A,B,C>

对比

Predicate<? super A>
Function<? super A, ? extends B>
BiFunction<? super A,? super B,? extends C>

它看起来很困惑,甚至错误消息也变成了:

Incompatible types: Function<Item, Long> is not convertible to Function<Item, String>

类似

Incompatible types: 
Function<capture of ? super Item, capture of ? extends Long> is not
convertible to Function<capture of ? super Item, capture of ? extends String>

这很难读。我已阅读following question但仍然纠结是否应用它,因为它会污染库代码并使编译器错误消息变得更糟。就我个人而言,我会选择 PCES Predicate<A>变体。

是否有一些关于是否应用 PECS 的指南?我知道优点和缺点,但我想知道人们真正存储的频率是多少。 Predicate lamda 和方法引用等字段不受 PECS 提供的影响。我在网上没有找到任何进一步的建议。 Here是受此影响的类之一。

最佳答案

正如主帖下面的评论中广泛讨论的那样:与 JDK/标准库的一致性和对齐以及 PECS 的使用以及通过使用 PECS 获得的兼容性改进是始终使用 PECS 的一个很好的论据(至少在设计库时) )

关于java - 设计库时何时使用 PECS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316502/

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