java - 为什么Android获取类的声明字段是无序的?

标签 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 给我的字段没有声明的顺序?(名称、所有者、品种) 输出为:品种、名称、所有者

最佳答案

关于此方法,Android 文档似乎并不完整。 Oracle documentation提到以下内容:

The elements in the array returned are not sorted and are not in any particular order.

似乎没有关于字段如何存储在内存/缓存中的确切 JVM 规范。但是,您始终可以检查 Android Class source深入了解确切的字段顺序(但不同版本可能有所不同)。

关于java - 为什么Android获取类的声明字段是无序的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823786/

相关文章:

java - 使用 Apache Poi 重命名 XSSFTable 的 header 会导致损坏的 XLSX 文件

java - 窗口 8 上的进度条卡住

android - 单击按钮时从 TabActivity 调用已启动 Activity 中的自定义方法

用于解析MapInfo TAB格式的Java API

java - 如何找到用户输入的两个输入的公共(public)后缀?

java - 如何在android studio中的java类中的包文件中打开sqlite db

java - 具有多个随机动画实例的 Android View

php - ReflectionClass getDocComment 返回 false

Java Reflection 通过 Android 通知上的内部类从 WhatsApp 获取消息

c# - 如何在 .Net 中实现 "convert using this function"自定义属性?