我正在使用一个 API,其中给出了这样的特征:
package pkg
trait Trait {
private[pkg] def f = ...
private[pkg] val content = ...
}
我想使用 Jar 文件中的 API 访问代码中的变量content
和函数f
(因此我无法修改原始代码以删除private
定义)。
作为第一个解决方案,我能够想出的是在同一个包中创建一个新的桥接类,它可以帮助我访问私有/受保护的成员函数,如下所示:
package pkg
trait PkgBridge {
def f = Trait.f
def getContent(t : Trait) = t.content;
}
这样我就可以从我的代码中调用包私有成员。
我想知道这种情况是否有任何复杂的方法或通用模式(比如一些带有隐含的魔法或其他东西?)。
谢谢!