我使用的其中一個特質被賦予這樣的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