我在Windows 7上使用Netbeans 7.2.1。
我试图获取实体的所有属性并将它们存储在String数组中。我想以我能想到的最普遍的方式做到这一点,所以像jCSV中那样的方法:
public void writeAll(List<E> data) throws IOException {
for (E e : data) {
write(e);
}
}
您可以在此处找到该软件包:https://code.google.com/p/jcsv/
public String[] getProperties( E e ){
String [] properties = new String[ e.numberOfProperties ];
int i = -1;
for ( P p : e ) {
i += 1;
properties[i] = p.toString(); // OR properties[i] = e.getProperty[i].toString();
}
return properties;
}
我觉得应该有一些方法可以使用the Properties class进行此操作,但我无法找到一种方法来使用它来从实体获取属性。我认为这只是一些简单的事情,但我看不到哪里。
答案 0 :(得分:1)
@Ian Roberts暗示要查看java Introspector类here。只有在使用标准Java bean命名约定来访问实体属性时,该类才有用。
您要做的是使用BeanInfo
方法获取课程的Introspector#getBeanInfo(Class beanClass)
,然后使用getMethodDescriptors()
的{{1}}方法检索所有bean的“getter”方法。从那里,您可以迭代它们并获取实体的属性并在其上调用BeanInfo
。
使用此类而不是仅仅使用普通的旧反射的一个优点是,它在对类进行了内省后可以缓存类的toString()
,从而获得性能提升。您也无需在反射代码中对BeanInfo
或get
等任何内容进行硬编码。
以下是使用内置检查器的set
方法的示例:
getProperties
此示例编译并运行。