我正在尝试process
使用 Java 中的反射调用示例模型类中的方法。该方法接受字符串和字符串的映射并返回相同的内容,即字符串和字符串的映射。
下面是我的代码,但不知何故,它每次都给我一个例外。
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);
}
这条线-总是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