以前、JavaでFriendクラスのような事を実現する方法というエントリを書いたのですが、もう少しすっきりした書き方を見つけたので紹介&再掲載しておきます。 【やりたいこと】Fooクラスのfooメソッドを、別パッケージのBarクラスにのみ公開したい まず、Fooクラス、Barクラスを作成。 Foo.java public class Foo { private void foo() { System.out.println("foooooo"); } } Bar.java package b; public class Bar { private void bar() { new Foo().foo(); // ←コンパイルエラー } } 上記のBarクラスは、当然コンパイルエラーとなる。そこでまず、Fooクラスに特定のFriendからのアクセスを許可するためのBridge的な内部クラス(