为什么Android fetch声明一个类的字段无序?

时间:2013-07-24 01:34:05

标签: java android reflection field

假设我们有这个类

Animal.java

public class Animal {
    private String name;
    private String owner;
    private String breed;
}

MainActivity.java

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    StringBuilder sb = new StringBuilder();
    for(Field f : Animal.class.getDeclaredFields()){
        sb.append(f.getName()).append(", ");
    }

    ((TextView) findViewById(R.id.textView1)).setText(sb.toString());
    }
}

为什么TextView会为我提供未声明订单的字段?(名称,所有者,品种) 输出是:品种,名称,所有者

1 个答案:

答案 0 :(得分:0)

似乎有关此方法的Android文档不完整。 Oracle documentation提及以下内容:

  

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

看起来没有关于字段如何存储在内存/缓存中的确切JVM规范。但是,您始终可以检查Android Class source以获取有关确切字段顺序的信息(但版本可能因版本而异)。