パッケージにクラスがあり、org.jake
デフォルトのアクセス権(修飾子なし)を持つメソッドがあるとします。その場合、メソッドはパッケージ内にのみ表示されます。
しかし、誰かが私のフレームワークのjarを受け取ったとき、彼らが新しいクラスを作成し、そのパッケージをとして宣言し、org.jake
私のおそらく見えないメソッドを使用するのを防ぐにはどうすればよいですか?
言い換えれば、これを防ぐために私ができることはありますか?
パッケージにクラスがあり、org.jake
デフォルトのアクセス権(修飾子なし)を持つメソッドがあるとします。その場合、メソッドはパッケージ内にのみ表示されます。
しかし、誰かが私のフレームワークのjarを受け取ったとき、彼らが新しいクラスを作成し、そのパッケージをとして宣言し、org.jake
私のおそらく見えないメソッドを使用するのを防ぐにはどうすればよいですか?
言い換えれば、これを防ぐために私ができることはありますか?
パッケージをjarファイルに封印することができます。ただし、防弾ではありません。
そもそもセキュリティの観点からアクセス修飾子などに頼らないことが大事です。誰かが無制限の権限でコードを実行している場合、その人はあらゆる種類のものにアクセスできるようになります。アクセス修飾子は、実際には、人々が誤って足を撃たないようにするのに役立ちます。
誰かがあなたのカプセル化を回避するためにあなたのパッケージにクラスを入れても構わないと思っているなら、彼らはあなたの最善の意図を明らかに無視しています-私はそれを続けさせてください、しかしそのシナリオのサポートを提供しません。
これを防ぐためにできることは何もありません。プライベートメンバーでもリフレクションを介してアクセスできます。Javaのアクセス修飾子は単に示唆的なものであると考える必要があります。
つまり、同じJVM内で、自分のコードを呼び出すことができるコードを実行することを許可しないでください。代わりに、外部から呼び出すことができる(Web)サービスのみを提供することを検討できます。しかし、これを実装するための最良の方法についてはあまり最新ではありません。