ArrayList返回错误值

问题描述:

这与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

问题是在这里:

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