2013-07-24 78 views
1

假设我们有这个类为什么Android提取一个类的声明字段无效?

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的给我用不声明的顺序领域?(名,所有者,品种) 输出:品种,名称,拥有者

+0

我也遇到过这个问题。是不是Android可爱 – spy

回答

0

似乎Android文档没有完成这个方法。 Oracle documentation提到下列:

元素返回不排序阵列中,并且不以任何 特定顺序。

看起来好像没有关于字段如何存储在内存/缓存中的精确的JVM规范。但是,您始终可以检查Android Class source以了解有关确切字段顺序的信息(但版本可能不同)。

+0

是的,但是,“常规”的Java,与一个主类,给出输出按行号排序..我不知道为什么.... – oufff

+0

它可能只是一些jvm实现特定?无论如何,我们不应该依赖没有记录的员工,因为这很可能会导致问题得到进一步的代码支持。 – sandrstar

相关问题