ArrayList返回错误的值

Cod*_*007 0 java arraylist

这与类中的对象数组有关.我最初将它添加到该问题,但因为这个问题得到了回答,我没有收到回复.

所以我有2节课.一个包含另一个类的列表.我正在将数据添加到我从数据库中取出的类中.但是,当我从List中取出数据时,值都是相同的.它们是列表中最后一个元素的值.

我已经尝试在每个循环中重新创建对象,但它似乎仍然导致问题.我不知道我在这里做错了什么.

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

    String md5sum;

    String zipfile;

    List<PictureData> pics = new ArrayList<PictureData>();
Run Code Online (Sandbox Code Playgroud)

...

public class PictureData {

    static String filename;
    static String directory;
Run Code Online (Sandbox Code Playgroud)

...

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);     
} 
Run Code Online (Sandbox Code Playgroud)

...

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);

}
Run Code Online (Sandbox Code Playgroud)

Lok*_*esh 5

问题在这里:

public class PictureData {

    static String filename;
    static String directory;

}
Run Code Online (Sandbox Code Playgroud)

你为什么要使文件名和目录静态?它只能包含一个值.使它们非静态,它将起作用.