This question让我转向this answer,其范围从SetProxy
而不是Set
。但SetProxy
已被弃用!文档说" (自版本2.11.0起)由于缺乏使用和编译器级支持而不推荐使用代理。"
为什么代理没有得到使用和编译器支持? Scala是否提供了更好的技术来完成同样的事情?它被发现有一些致命的缺陷吗?
答案 0 :(得分:4)
代理被弃用,因为它很脆弱。代理应该将所有调用转发回其他实现。但是如果你在Set层次结构中添加一个新方法会怎么样 - 有人会记得将它添加到SetProxy并确保它指向它应该的位置吗?
实际上,没有好的方法来验证代理实际上是否正常运行。因此,我们决定最好不要拥有这些功能,而不是让它看起来像是有效的,但实际上已经没有了。编译器对代理的支持可能使得维护健壮的代理变得容易,但手动方法不够健壮。