1

我有一个对象列表:List< Object>。有没有办法按位置获取属性?我在想这样的事情:

 for(int i=0 ; i<list.size() ; i++) {
   Object o = list.get(i);
   attribute1 = o.get(1);
 }
4

2 回答 2

0

您可以使用反射来做到这一点:

Object obj = ...
Field[] fields = obj.getClass().getDeclaredFields();

请注意,不能保证字段顺序,您可能需要使用getDeclaredField(String fieldName)

Javadoc:#getDeclaredFields()

反射教程:http ://docs.oracle.com/javase/tutorial/reflect/

于 2013-09-22T05:32:07.423 回答
0

依靠。

如果您getDeclaredFields()按照某些人的建议使用,则字段上没有定义特定的顺序。从Javadoc

返回的数组中的元素没有排序,也没有任何特定的顺序。

对于您的用例,可能是任意排序的位置访问有效。如果是这样,那就太好了。否则请谨慎使用。您可能需要强加自己的顺序(例如,在调用后按字母顺序对字段进行排序getDeclaredFields())。

于 2013-09-22T05:34:45.510 回答