我使用的其中一个特质被赋予这样的API:斯卡拉魔法使私人/受保护的成员可见?
package pkg
trait Trait {
private[pkg] def f = ...
private[pkg] val content = ...
}
我想访问我的代码变量content
和功能f
,使用API JAR文件(所以我不能修改原始代码去除private
定义)。
我能想出的第一个解决方案是建立在同一个包的新桥类,可以帮助我访问私有/受保护成员函数是这样的:
package pkg
trait PkgBridge {
def f = Trait.f
def getContent(t : Trait) = t.content;
}
这样我可以从我的代码中调用包私有成员。
我想知道是否有任何复杂的方式或常见的模式,这种情况下(像一些魔术含有暗示或什么?)。
谢谢!
你不觉得这些成员是隐藏的吗? –
@ DanielC.Sobral在Rex Kerr的回答中看到我的评论。 – rlegendi