私は次のように特性が与えられるAPIを使用しています:
package pkg
trait Trait {
private[pkg] def f = ...
private[pkg] val content = ...
}
content
Jar ファイルの API を使用して、コード内の変数と関数にアクセスしたいf
(そのため、元のコードを変更してprivate
定義を削除することはできません)。
最初の解決策として思いついたのは、同じパッケージに新しいブリッジクラスを作成することです。これにより、次のようなプライベート/保護されたメンバー関数にアクセスできます。
package pkg
trait PkgBridge {
def f = Trait.f
def getContent(t : Trait) = t.content;
}
このようにして、コードからパッケージのプライベート メンバーを呼び出すことができます。
この種の状況に洗練された方法や一般的なパターンがあるかどうか疑問に思っていました (暗黙の魔法など)。
ありがとう!