Java での C 'friend' 概念のシミュレーション
Java の異なるパッケージのクラス間でプライベート メソッドへの直接アクセスを許可するには、次のことを考慮してください。次のテクニック:
ステップ 1: 「セキュリティ署名」を作成するClass
アクセスを必要とするクラスのパッケージ内で、「セキュリティ シグネチャ」として機能するパブリック クラスを定義します。このクラスは、そのパッケージ内でのみアクセスできる必要があります。
ステップ 2: コンストラクターを制限する
セキュリティ署名クラスのコンストラクターをプライベートにします。これにより、パッケージ内のクラスのみがインスタンスを作成できるようになります。
ステップ 3: 静的参照を作成する
セキュリティ署名クラス型の静的変数を宣言します。これにより、署名オブジェクトに簡単にアクセスできるようになります。
ステップ 4: ターゲット メソッドを定義する
制限付きアクセスを許可するクラスで、必要なメソッドを定義します。セキュリティ署名クラスを引数として指定します。このメソッドには、public や protected などの適切なアクセス許可が必要です。
例:
クラス Romeo (Montague パッケージ内) が非アクセス権にアクセスするシナリオを考えてみましょう。クラス Juliet の public メソッド (パッケージ内) Capulet).
Juliet.java:
package capulet; public class Juliet { public void cuddle(Romeo.Love love) { if (love == null) { throw new NullPointerException(); } System.out.println("O Romeo, Romeo, wherefore art thou Romeo?"); } }
Romeo.java:
package montague; public class Romeo { public static final class Love { private Love() {} } private static final Love love = new Love(); public void cuddleJuliet() { Juliet.cuddle(love); } }
この例では、クラス Romeo.Love はセキュリティ署名として機能します。民間コンストラクターのため、ロミオのみが建設できます。 Juliet の cuddle メソッドを実行するには、Romeo が提供できる Romeo.Love のインスタンスが必要です。これにより、Montague パッケージ外の他のクラスからの不正アクセスが防止されます。
以上がC の「フレンド」機能を Java でシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。