我正在开发一个涉及程序与MySQL数据库交互的项目,当运行查询以从数据库获取一定数量的值时,它会执行它然后将值存储为对象,最终通过他们到列表。
目前,它从数据库中获取信息没关系,通过okay传递变量,但是当我去打印该列表名称中的对象时,它返回所有相同的值(要传递的最后一个值)
如何返回存储在该列表中的所有对象值?
代码如下:
ArrayList<Game> gameDetails = new ArrayList<Game>();
while (rs.next()) {
String gameName = rs.getString("game");
int score = rs.getInt("score");
int time = rs.getInt("time");
gameDetails.add(new Game(gameName, score, time));
System.out.println(gameName);
}
for (int i = 0; i < gameDetails.size(); i++) {
System.out.println(gameDetails.get(i).getName());
}
游戏对象类
public class Game {
private static String name = "";
private static int time = 0, score = 0;
public Game(String n, int t, int s) {
this.name = n;
this.time = t;
this.score = s;
}
public static String getName() {
return name;
}
public static int getScore() {
return score;
}
public static int getTime() {
return time;
}
public static void setName(String n) {
name = n;
}
public static void setTime(int t) {
time = t;
}
public static void setScore(int s) {
score = s;
}
}
目前,它在控制台中返回此值,没有getName()方法:
Game@516a3a8
Game@6c9844ae
Game@17115812
它返回
Call of Duty
Call of Duty
Call of Duty
使用getName()方法
所以看起来每个值都是唯一的,只有当我去调用getName()方法时才会这样。
非常感谢任何帮助!
谢谢!
答案 0 :(得分:4)
因为您使用静态变量来保存游戏值,所以每个游戏值都使用这些变量的相同实例,因此每个游戏对象都将具有相同的值。在游戏定义中删除名称,时间和分数中的静态
答案 1 :(得分:2)
您在Game
类中使用静态成员变量。当您将字段声明为private static
成员(而不是private
)时,这些字段将在所有Game对象实例中共享。因此每次更改字段的值时,例如name
字段,值将在共享引用中更新。将字段更改为private
应该有效。
private String name = "";
private int time = 0, score = 0;