0

クラス内にgetterメソッドがあります。同じJAR内で、同じパッケージとサブパッケージから、識別子なしのアクセスレベルで変数にアクセスできるようにする必要があります。

アクセスレベルの下:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

私たちの問題は、誰かがコンパイルされた.JARを取得し、同じパッケージ名前空間定義でクラスを作成し、ゲッターを介して変数にアクセスできないようにするにはどうすればよいですか?

特定の変数のすべてのゲッターを取り除き、セッターとコンストラクターを使用して他のクラスが自分自身への参照を渡すときに、変数の値を他のクラスに与えることを考えました。明らかに、彼らは最終クラスになります。このように、変数値を必要とするすべてのオブジェクトは、独自のプライベートコピーを持ちます。

もっと良い方法があるのだろうか?

4

2 に答える 2

7

アクセス制御修飾子(、、public)はprivateprotectedセキュリティツールとしてではなく、OO設計ツールとして使用されます。これらは、カプセル化、継承などのOOパターンを実装するために使用されます。

ゲッターがなく、プライベート変数がない場合でも、Java開発者はリフレクションを使用して変数にアクセスできます。

何かを秘密にしておきたい場合は、誰かが実行するプログラムの変数に入れないでください。自分のマシンに保管してください。

于 2012-09-21T10:07:53.070 に答える
1

- ここにあるReflectionようです。これを使用すると、アクセス修飾子を使用してもアクセスできます。evilvariableprivate

--like 、、、およびFour access controlslikeprivateをサポートするツールとして、Javaでさらに導入されています。defaultprotectedpublicCore Object Oriented ConceptInheritanceEncapsulation

于 2012-09-21T10:24:29.747 に答える