Java でのプライベート メソッドへの制限付きアクセスの提供
Java では、C の「フレンド」概念を直接複製することはできません。外部エンティティに対するクラスのプライベート メンバーへのアクセス。ただし、別の手法を使用しても、同様の動作を実現できます。
愛の署名アプローチ
制御されたアクセスを実現するための賢いアプローチの 1 つは、「秘密」署名を使用することです。その仕組みは次のとおりです。
例:
異なるパッケージの 2 つのクラス、Romeo と 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); } }
このアプローチは、署名クラス コンストラクターの排他性を利用して、カプセル化とプライバシーを維持しながら、必要なメソッドへの選択的なアクセスを許可します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3