这与 Array of objects in a class 相关。我最初将其添加到该问题中,但由于该问题已得到解答,所以我没有得到答复。
所以我有两个类。其中一个包含另一个类的列表。我正在将数据添加到从数据库中提取的类中。但是,当我从列表中取出数据时,值都是相同的。它们是列表中最后一个元素的值。
我尝试在每个循环中重新创建对象,但它似乎仍然导致问题。我不明白我在这里做错了什么。
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);
}
最佳答案
问题出在这里:
public class PictureData {
static String filename;
static String directory;
}
为什么将文件名和目录设为静态?它只能包含一个值。让它们成为非静态的,它就会起作用。
关于java - ArrayList 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16258999/