在
Java中可以通过其名称获取类属性值吗?
例如,我有类喜欢
例如,我有类喜欢
public class Test { private String field; public String getField() {...} public void setField() {...} }
和另一个类与地图
public class Main { private static final Map<String,Long> map = new HashMap<String,Long>(); static { map.put("field",new Long(1)); } public void doSth() { Set<String> keys = map.keySet(); Test t = new Test(); for (String key : keys) { //t.getPropertyValueByName(key); ? } }
解决方法
您可以使用一些提供基于属性的访问的库.我认为最着名和使用的是
beanutils.你可以找到一个很好的例子,在“在行动”
here的beanutils.
一些示例代码:
一些示例代码:
A someBean = new A(); // access properties as Map Map<String,Object> properties = BeanUtils.describe(someBean); properties.set("name","Fred"); BeanUtils.populate(someBean,properties); // access individual properties String oldname = BeanUtils.getProperty(someBean,"name"); BeanUtils.setProperty(someBean,"name","Barny");