Java リフレクション API を介していくつかのクラスをインスタンス化し、インスタンス化されたクラスで「a」メソッド (リフレクションを介さないメソッド呼び出し) を呼び出す必要があります。リフレクションがアプリケーションのパフォーマンスに影響を与えることは知っていますが、それが Web 環境にどの程度影響するかはよくわかりません! リフレクションを使用して Action クラスをインスタンス化する Struts フレームワークと同様に、私のフレームワークもファイルに構成された文字列としてクラス名を取得し、さまざまな要求でそれを読み取ってインスタンス化します。クラスごとにインスタンスを 1 つだけ持ち、リクエストごとにそのメソッドを呼び出すというアイデアはどうですか? 例、
package com.app.events;
public class event1 implements iEvent {
public event1() {
}
public void doprocess(Object info) {
// do necessary events
}
}
package com.app.events;
public class event2 implements iEvent {
public event1() {
}
public void doprocess(Object info) {
// do necessary events
}
}
config.xml
<events>
<event>com.app.events.Event2</event>
<event>com.app.events.Event1</event>
</events>
// servlet init
String clazName = parseXMLFile(); // not every time but only once, I have the bean
Class claz = Class.forName(clazName);
// how about this?
// I save this instance for later requests
events.put(request.getParameter("event"), claz.newInstance());
// later requests,I retrieve the event from the map and invoke its method,
// just a rough code...
events.get(request.getParameter("event")).doprocess(info);