この 1 時間か 2 時間は、Java リフレクションに飛び込んできました。ちゃんと理解できるようになったと思います。
しかし、探していたいくつかの答えを見つけることができませんでした。
私が理解したのは、リフレクションがクラス ルックアップから大きな (最大の?) パフォーマンス ヒットを受けるということです。
2 つの質問があります。
現在のコンテキスト内からメソッドを呼び出すにはどうすればよいですか (それは可能ですか?)? また、現在のコンテキスト内で呼び出すと、クラス ルックアップによるパフォーマンス ヒットは相殺されますか?
例えば:
class User {
private String name;
public getName(){ return name; }
public setName(String name){ this.name = name; }
public void doSomething() {
//some random stuff
//I would like this method to invoke randomMethod();
//Since it is within the same context(this)
//Will this reduce the performance cost?
//Please assume from my goals that I will ALWAYS know the name of the method i want to call.
//So I wont need to loop through all available methods.
}
public void randomMethod() {
}
}
ある種のディスパッチャーを実現しようとしています。たとえば、Java での Web 開発の場合です。
フレームワークなどには興味がありません。
したがって、ユーザーが URL http://www.hiurl.com/home/indexを入力すると
ホームはコントローラーで、アクション (リフレクションによって呼び出されるメソッド名) にインデックスを付けます。
失敗する可能性が多いことを除けば、これを絶対に避けるべき理由がある場合は、私にも知らせてください.
私の質問が明確であることを願っています。お時間を割いてお読みいただきありがとうございます。返信をお待ちしております。