我有幫助調用已知方法的方法Java反射getDeclaredMethod類檢查
public static void invoke(Object object, Class<?> callingClass, String methodName, Object[] param)
我能夠調用此
for (Method method : callingClass.getDeclaredMethods()) {
if (method.getName().equals("bla")) {
method.invoke(object, param);
}
}
但是,當我試着打
Class[] paramClass = new Class[param.length];
for (int i = 0; i < paramClass.length; i++) {
paramClass[i] = Class.forName(param[i].getClass().getName());
}
Method method = callingClass.getDeclaredMethod(methodName, paramClass);
我遇到了java.lang.NoSuchMethodException。 ,我試圖調用的方法是
public void bla(String[] arg, Map<String, String[]> argContext);
我在我的「調用」方法的上方通過,只是爲PARAM,陣列由一字符串[]的對象,和一個地圖對象從類別中檢索.unmodifiableMap(source)
我猜這個問題來自於我的輸入是UnmodifiableMap,其中bla方法需要一個常規的Map。這有什麼工作?謝謝
param [i] .getClass()確實簡化了一點。 但是有沒有解決這個問題的方法?我只想在傳入參數的情況下調用該方法。 – vda8888