我想在Java中使用反射在Sample Model類中調用方法process
。該方法接受一個字符串和字符串的映射並返回相同的東西,一個字符串和字符串的映射。調用使用反射的方法並返回映射
下面是我的代碼,但不知怎的,它每次都給我一個例外。
Map<String, String> test = new LinkedHashMap<String, String>();
try {
test.put("CGUID", "ABCD");
test.put("RESOURCEINDEX", "XYZ");
Method m = SampleModel.class.getDeclaredMethod("process", Map.class);
Object o = m.invoke(null, test);
}
這LINE-Object o = m.invoke(null, test);
給我Null Pointer Exception
始終。
任何人都可以幫助我在這裏做什麼錯?
下面是
@Override
public Map<String, String> process(final Map<String, String> attributes) {
Map<String, String> newData = new LinkedHashMap<String, String>();
for (Map.Entry<String, String> entry : attributes.entrySet()) {
StringBuilder sb = new StringBuilder();
sb.append(entry.getValue()).append("$$$$").append(UUID.randomUUID().toString());
newData.put(entry.getKey(), sb.toString());
}
return newData;
}
方法簽名工具更新: -
Class<SampleModel> consClass = SampleModel.class;
Map<String, String> test = new LinkedHashMap<String, String>();
try {
test.put("CGUID", "ABCD");
test.put("RESOURCEINDEX", "XYZ");
Method m = SampleModel.class.getDeclaredMethod("process", Map.class);
Object o = m.invoke(consClass, test);
}
上面的代碼也不能正常工作?這讓我異常原樣
object is not an instance of declaring class
是'M'空? 'process'的簽名是什麼樣的? –
我剛剛更新了問題..沒有m不是空的.. – AKIWEB