ホームページ >Java >&#&チュートリアル >Java で C の「フレンド」概念をシミュレートするにはどうすればよいでしょうか?
Java での C の「フレンド」概念のシミュレーション
Java は、クラスを許可する C で見られるような明示的な「フレンド」概念を提供しません。さまざまなパッケージから非公開メンバーにアクセスします。ただし、この動作を複製するために賢いテクニックを使用できます。
Java での C 'friend' の複製
2 つのクラス、Romeo と Juliet が別々のパッケージにあると考えてください。ジュリエットは、自分のメソッドへのアクセスをロミオに制限したいと考えています。 C では、これは、ロミオをジュリエットの「友達」として宣言することで実現できます。
Java では、プライベート コンストラクターと静的参照を使用することで、同様の効果を実現できます。
public static void cuddle(Romeo.Love love) { if (love == null) throw new NullPointerException(); System.out.println("O Romeo, Romeo, wherefore art thou Romeo?"); }
public static final class Love { private Love() {} }
Romeo だけが Romeo.Love インスタンスを構築できます。次に、Romeo は静的な最終 Romeo.Love 参照を作成します:
private static final Love love = new Love();
public static void cuddleJuliet() { Juliet.cuddle(love); }
アクセス権があるため、Romeo だけが Juliet の cuddle メソッドを実行できます。 Romeo.Love インスタンスに。コンストラクターがプライベートであるため、他のクラスは Romeo.Love をインスタンス化できません。
この手法により、他のクラスからのアクセスを制限しながら、ロミオがジュリエットの cuddle メソッドにアクセスできるようになり、ジュリエットがロミオのみを信頼する Java の「友達」の概念を効果的にシミュレートできます。 .
以上がJava で C の「フレンド」概念をシミュレートするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。