2013-04-28 78 views
0

這與Array of objects in a class有關。我原來把它加入到這個問題中,但是因爲這個問題得到了回答,我沒有得到答覆。ArrayList返回錯誤值

所以我有2個班。一個包含另一個類的列表。我將數據添加到已從數據庫中提取的類中。但是,當我將數據從列表中拉出時,值都是一樣的。它們是列表中最後一個元素的值。

我曾嘗試在每個循環中重新創建對象,但它似乎仍然會導致問題。我沒有看到我在這裏做錯了什麼。

public class xmldata { 
    String Barcode; 
    String First; 
    String Last; 
    String Phone; 
    String Email; 

    String md5sum; 

    String zipfile; 

    List<PictureData> pics = new ArrayList<PictureData>(); 

...

public class PictureData { 

    static String filename; 
    static String directory; 

...

xmldata data = new xmldata(); 

ResultSet pictures=db.query("select * from pictures where barcode=?",barcode); 



while (pictures.next()) { 
    PictureData pictemp= new PictureData(); 
    pictemp.setdirectory(pictures.getString("path")); 
    pictemp.setfilename(pictures.getString("filename")); 
    data.pics.add(pictemp);  
} 

...

for (int j=0; j<data.pics.size();++j) { 

    String path; 
    PictureData pictemp2= new PictureData(); 

    pictemp2=(PictureData) data.pics.get(j); 
    path=pictemp2.getdirectory()+pictemp2.getfilename(); 

    System.out.println(path); 

    zip.addfile(path); 

} 
+0

你在瀏覽data.pics中的內容後是否已經崩潰了? – 2013-04-28 02:44:57

+0

它實際上並沒有告訴我那裏有什麼。它只是列出了圖片> elementData> [0] PictureData(id = 43)和圖片> elementData> [1] PictureData(id = 45) – Codeguy007 2013-04-28 02:50:22

+0

你的PictureData在哪裏? – StarPinkER 2013-04-28 02:51:33

回答

5

問題是在這裏:

public class PictureData { 

    static String filename; 
    static String directory; 

} 

你爲什麼使文件名和目錄是靜態的?它只能包含一個值。使它們不是靜態的,它會起作用。

+3

+1,你跟着另一篇文章:) – 2013-04-28 02:52:25

+0

所以eventhough,我有這個類的多個實例,它只能保存一個值,因爲它是靜態的,因此對所有實例相同? – Codeguy007 2013-04-28 02:56:34

+1

@ Codeguy007:是的,靜態在類級而不是實例級。 – Lokesh 2013-04-28 02:57:29