【发布时间】:2025-12-09 14:20:05
【问题描述】:
在 Scala 标准库中有一个类Proxy[T]。来自 API:
这个类实现了一个简单的代理,它将所有对类 Any 中定义的公共非最终方法的调用转发给另一个对象自身。
从以上以及关于这个类的堆栈溢出中的大量问答,我推断这与使用implicit class 相同。
这是正确的吗? 如果是这样,使用Proxy 类而不是implicit 关键字有哪些优点/缺点?
【问题讨论】:
在 Scala 标准库中有一个类Proxy[T]。来自 API:
这个类实现了一个简单的代理,它将所有对类 Any 中定义的公共非最终方法的调用转发给另一个对象自身。
从以上以及关于这个类的堆栈溢出中的大量问答,我推断这与使用implicit class 相同。
这是正确的吗? 如果是这样,使用Proxy 类而不是implicit 关键字有哪些优点/缺点?
【问题讨论】:
这两件事完全不相关。 Proxy 的描述有点误导。它所做的只是根据对等对象实现hashCode、equals 和toString。它没有任何转发任何其他方法的魔力。
【讨论】:
Proxy 使用新方法扩展另一个类。您可以使用代码implicit class RichFoo(self: Foo) { def newMethod = "do something cool" } 实现相同的目的。这在实践中不是一回事吗?
Proxy。当然,我从来没有这样做过……