0

[注:私はJavaの初心者です]

オブジェクトを名前で呼び出してから、そのメソッドを名前で呼び出そうとします。

しかし、このコードは例外java.lang.NoSuchMethodExceptionをスローします。

Field mainClassField = mainObject.getClass()
                                 .getField( dataObject.callObject );
/* callObject is an another object */
Object callObject = mainClassField.get( mainObject );   

Method callMethod = callObject.getClass()
                      .getMethod( dataObject.callMethod ); << error on this line
callMethod.invoke(callObject, dataObject);

[注:actionscript3からAMFを介してdataObjectを渡します]

オブジェクトコードの呼び出し:

public class UserCallController extends Controller {

    public void getUserById(DataTransferObject dataObject) {
        Ppvchat mainClass = _inst._mainClass;

        dataObject.data.put("userData", 
                mainClass.userModel.getById( dataObject.data.getString("id") ));
    }

}

ありがとう。

4

1 に答える 1

2

そのNoSuchMethodExceptionような方法が実際に存在しない場合。したがって、以下を確認してください。

  1. どのクラスを扱っていますか。
  2. どのメソッドを呼び出そうとしていますか。メソッド名とシグネチャを再確認してください。

とにかくあなたのコードは間違っているようです。

callObject.getClass().getMethod( dataObject.callMethod );メソッドに引数がないと思うことを意味します。

callMethod.invoke(callObject, dataObject);これは、このメソッドにから割り当て可能な引数があると考えることを意味しますdataObject

于 2012-09-04T18:56:15.330 に答える