2017-05-05 7 views
0

私は誰かのコードを見ていて、メソッドを一度変更してmethod.invokeを直接パブリックメソッド(正確にはsun.jvm.hotspot.tools.jcore.ClassDump.main sa-jdi.jarで)。method.invokeを使用してjavaのパブリックメソッドのメソッドを実行するだけの違いはありますか?

私はそれを直接実行するように修正しても、うまくいっているようです。

誰もが直接実行してmethod.invokeを使用することの違いは何ですか?彼がなぜコードを変更したのか本当に不思議です。

+0

あなたは単に彼に直接尋ねてみませんか? –

+0

最後に違いはないはずです、それはまさにポイントです。呼び出しメソッドは通常、直接呼び出し(予想)よりも遅く反映されますが、最適化することもできます。実際に呼び出されたメソッドが将来のある時点で変更されるように、呼び出しが間接的に呼び出される可能性があります。 –

+0

@TimothyTruckleもちろん、私はその男に今触れることができない、または私は彼に直接尋ねることができます。 – Solo

答えて

0

official tutorialを引用すると:

リフレクションは、クラスのメソッドを呼び出すための手段を提供します。通常、これは、非反射コードでクラスのインスタンスを目的の型にキャストすることができない場合にのみ必要です。メソッドはjava.lang.reflect.Method.invoke()で呼び出されます。

ダイレクト方法は、クラスを初期化してメソッドを呼び出すことです。

0

Javaでのリフレクションでは、パフォーマンス面でコストがかかります。直接メソッドを呼び出すことができれば、そのまま実行してください。 同様の質問herehereと非公式のベンチマークhereがあります。

関連する問題