2013-07-24 30 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

相關問題