我有一个对象列表:List< Object>。有没有办法按位置获取属性?我在想这样的事情:
for(int i=0 ; i<list.size() ; i++) {
Object o = list.get(i);
attribute1 = o.get(1);
}
我有一个对象列表:List< Object>。有没有办法按位置获取属性?我在想这样的事情:
for(int i=0 ; i<list.size() ; i++) {
Object o = list.get(i);
attribute1 = o.get(1);
}
您可以使用反射来做到这一点:
Object obj = ...
Field[] fields = obj.getClass().getDeclaredFields();
请注意,不能保证字段顺序,您可能需要使用getDeclaredField(String fieldName)
Javadoc:#getDeclaredFields()
依靠。
如果您getDeclaredFields()
按照某些人的建议使用,则字段上没有定义特定的顺序。从Javadoc:
返回的数组中的元素没有排序,也没有任何特定的顺序。
对于您的用例,可能是任意排序的位置访问有效。如果是这样,那就太好了。否则请谨慎使用。您可能需要强加自己的顺序(例如,在调用后按字母顺序对字段进行排序getDeclaredFields()
)。