13

パッケージにクラスがあり、org.jakeデフォルトのアクセス権(修飾子なし)を持つメソッドがあるとします。その場合、メソッドはパッケージ内にのみ表示されます。

しかし、誰かが私のフレームワークのjarを受け取ったとき、彼らが新しいクラスを作成し、そのパッケージをとして宣言し、org.jake私の​​おそらく見えないメソッドを使用するのを防ぐにはどうすればよいですか?

言い換えれば、これを防ぐために私ができることはありますか?

4

4 に答える 4

17

パッケージをjarファイルに封印することができます。ただし、防弾ではありません。

そもそもセキュリティの観点からアクセス修飾子などに頼らないことが大事です。誰かが無制限の権限でコードを実行している場合、その人はあらゆる種類のものにアクセスできるようになります。アクセス修飾子は、実際には、人々が誤って足を撃たないようにするのに役立ちます。

誰かがあなたのカプセル化を回避するためにあなたのパッケージにクラスを入れても構わないと思っているなら、彼らはあなたの最善の意図を明らかに無視しています-私はそれを続けさせてください、しかしそのシナリオのサポートを提供しません。

于 2010-05-21T06:28:42.980 に答える
6

これを防ぐためにできることは何もありません。プライベートメンバーでもリフレクションを介してアクセスできます。Javaのアクセス修飾子は単に示唆的なものであると考える必要があります。

于 2010-05-21T06:28:04.707 に答える
1
于 2010-05-21T10:44:53.513 に答える
0

つまり、同じJVM内で、自分のコードを呼び出すことができるコードを実行することを許可しないでください。代わりに、外部から呼び出すことができる(Web)サービスのみを提供することを検討できます。しかし、これを実装するための最良の方法についてはあまり最新ではありません。

于 2010-05-21T10:23:29.430 に答える