メソッドを呼び出すには外部からの保護を奪われ、クラスまたはジャワ:確認してすることは不可能ですか?
正しい答えは"が存在するかしないかを明らかに依存してセキュリティマネージャを起動します。 "
確かに、反射を通じて可能性への行き方は、実際に、強制的にJava言語の制約を過度の難しさを、正確ではないammenochèセキュリティマネージャで、本当にできるだけの俳優を管理し、結局、これらの種類の部隊を停止します。
しかし、今すぐ来て私たちの例では多くのdisquisizioni以上の価値がある。 与えられたは、次のクラス:
net.nothing2hide.testパッケージ;パブリッククラスclasswithmethodstohack (プライベート無効sayhello (文字列名) ( system.out.println ( "こんにちは" +名+ " ! ");))プライベートメソッドを呼び出している invocabile方法について簡単に証明したいと外部のプライベート法" sayhello " 、と私はすでに予想を使用してこれを行うに大きく反射:
net.nothing2hide.testパッケージ;パブリッククラスprivatemethodinvocationtest ( / ** *このサンプルクラス*起動する方法を示して別のクラスのメソッドを保護* * @ param args場合* / public static無効メイン(文字列[ ] args ) (文字列myname = "デビッド" ;メソッドメートル;試し( / / let'accessのプライベートメソッド/ /によって反射します。これを行うと同じ/ /と、保護法メートル= classwithmethodstohack.class.getdeclaredmethod ( " sayhello " 、新しいクラス[ ] ( ) string.class ) ;場合(オス! = nullが) ( / /レッツ、強制的にJava言語のアクセス/ /チェックを反映メソッドを使用します。ノート/ /しているときにセキュリティマネージャが定義されて/ /この回避策が許されるできませんでした/ /とsecurityexceptionが提起m.setaccessible (真) 、 / /そして最後にレッツするには、 Protectedメソッドを呼び出すm.invoke (新classwithmethodstohack ( )は、新しいオブジェクト[ ] ( myname ));))キャッチ(例外メール) ( 5 e.printStackTrace ();)))
| | この記事は参考に様ですか? 購読するRSSフィード! |
まだ何のコメント'
RSSフィードを登録し、コメントは、次のポストを作成。 トラックバックURI



































