Java でプライベート メソッドへの制限付きアクセスを提供する
Java では、C の「フレンド」概念を直接複製することはできません。クラスのプライベート メンバーから外部エンティティへのアクセス。ただし、別の手法を使用しても、同様の動作を実現できます。
Love Signature アプローチ
制御されたアクセスを実現するための賢いアプローチの 1 つは、「秘密」署名を使用することです。その仕組みは次のとおりです。
例:
異なるパッケージの 2 つのクラス、Romeo と Juliet について考えます。 Romeo は、Juliet をサブクラスにせずに、Juliet のプライベート メソッドにアクセスする必要があります。
Juliet のコード:
// Capulet package public class Juliet { public static void cuddle(Romeo.Love love) { Objects.requireNonNull(love); // Juliet's private methods can be accessed here. } }
Romeo.Love は、プライベート コンストラクターを持つパブリック クラスです。 Romeo だけがインスタンスを作成できるようにします。
Romeo のコード:
// Montague package public class Romeo { public static final class Love { private Love() {} } private static final Love love = new Love(); public static void cuddleJuliet() { Juliet.cuddle(love); } }
このアプローチは、署名クラス コンストラクターの排他性を利用して、カプセル化とプライバシーを維持しながら、必要なメソッドへの選択的なアクセスを許可します。
以上が「フレンド」概念を使用せずに、Java でプライベート メソッドへの制限付きアクセスを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。