1

これに似た設定があります。Java Reflections を使用して execRequestメソッドを呼び出そうとすると、 parameterArrayでDelRequestであるサブクラス インスタンスを渡すと、NoSuchMethodFound 例外が発生します。

DelRequest delReq=new DelRequest();
delReq.setMsg("something");
Request req=(Request) delReq;

サービス メソッドはほとんどなく、最終的に次のコード行を呼び出します。今回は 、スーパークラス インスタンスをreqに渡していることに注意してください。定義されているのはメソッド シグネチャpublic String execRequest(Request request) です

lClass.getMethod( "execRequest", parameterArray)

これは私の基本的な設定ですが、どこが間違っているのでしょうか。

class DelRequest extends Request {
private String msg;


 /* getters and setters */
}

class Request {
}



class ExecuteRequest{
public String execRequest(Request request){
/* request do something*/
}

}
4

1 に答える 1

0

Reflection API では、宣言された型のパラメーターを使用する必要があります。したがって、 で呼び出すことはできexecRequestますが、 への引数としてDelRequest使用する必要があります。Request.classgetMethod

parameterTypesClassパラメータは、宣言された順序でメソッドの仮パラメータ タイプを識別するオブジェクト配列です。が null の場合 parameterTypes、空の配列であるかのように扱われます。

于 2015-02-25T19:52:24.597 に答える