导致 java.lang.NoSuchMethodException 的 getDeclaredMethod
getDeclaredMethod leading to java.lang.NoSuchMethodException
在我的一个 classes 中,我在下面的代码行中调用了 BLH 的 preOTPOperations class
Class<?> clazz = Class.forName("com.test.BLH");
Object obj = clazz.newInstance();
Class<?>[] paramTypes = new Class[4];
paramTypes[0]=String.class;
paramTypes[1]=String.class;
paramTypes[2]=Integer.class;
paramTypes[3]=COConfig.class;
Method m = clazz.getDeclaredMethod("preOTPOperations", paramTypes);
String responseMessage = (String) m.invoke(obj, new Object[]{cardnumber, null, bankId, myConfig});
但是,当我尝试使用 invoke() 如上所述调用 BLH 的 preOTPOperations 方法时,我得到 java.lang.NoSuchMethodException。
在 BLH class 我有如下的 preOTPO 操作。
public String preOTPOperations(String cardnumber, String mobileNumber, int bankid, COConfig coConfig){
//some code goes here
}
尽管在 BLH class 中使用 public 访问说明符进行了 preOTPOperations,但不确定为什么我会收到 NoSuchMethodException。有人好心地提出了解决方案。我错过了什么吗?提前致谢!
您需要将 Integer.class
更改为 int.class
。 Integer
和 int
不是同一类型,找不到方法,因为您指定了错误的类型。
在我的一个 classes 中,我在下面的代码行中调用了 BLH 的 preOTPOperations class
Class<?> clazz = Class.forName("com.test.BLH");
Object obj = clazz.newInstance();
Class<?>[] paramTypes = new Class[4];
paramTypes[0]=String.class;
paramTypes[1]=String.class;
paramTypes[2]=Integer.class;
paramTypes[3]=COConfig.class;
Method m = clazz.getDeclaredMethod("preOTPOperations", paramTypes);
String responseMessage = (String) m.invoke(obj, new Object[]{cardnumber, null, bankId, myConfig});
但是,当我尝试使用 invoke() 如上所述调用 BLH 的 preOTPOperations 方法时,我得到 java.lang.NoSuchMethodException。
在 BLH class 我有如下的 preOTPO 操作。
public String preOTPOperations(String cardnumber, String mobileNumber, int bankid, COConfig coConfig){
//some code goes here
}
尽管在 BLH class 中使用 public 访问说明符进行了 preOTPOperations,但不确定为什么我会收到 NoSuchMethodException。有人好心地提出了解决方案。我错过了什么吗?提前致谢!
您需要将 Integer.class
更改为 int.class
。 Integer
和 int
不是同一类型,找不到方法,因为您指定了错误的类型。