我有一个来自资源包的循环中的类的字符串、字段名的列表。我创建了一个对象,然后使用循环为该对象设置值。例如,对于对象
Foo f = new Foo();有了参数param1,我有了字符串"param1“,我想以某种方式将"set”与它连接起来,就像"set"+"param1“一样,然后将它应用于f实例,如下所示:
f.setparam1("value");getter也是如此。我知道反思会有所帮助,但我做不到。请帮帮忙。谢谢!
发布于 2010-12-30 15:29:31
你可以做这样的事情。您可以使此代码更通用,以便您可以将其用于字段的循环:
Class aClass = f.getClass();
Class[] paramTypes = new Class[1];
paramTypes[0] = String.class; // get the actual param type
String methodName = "set" + fieldName; // fieldName String
Method m = null;
try {
m = aClass.getMethod(methodName, paramTypes);
} catch (NoSuchMethodException nsme) {
nsme.printStackTrace();
}
try {
String result = (String) m.invoke(f, fieldValue); // field value
System.out.println(result);
} catch (IllegalAccessException iae) {
iae.printStackTrace();
} catch (InvocationTargetException ite) {
ite.printStackTrace();
}发布于 2010-12-30 17:04:05
Apache Commons BeanUtils做到了。
https://stackoverflow.com/questions/4560746
复制相似问题