public static void main(String[] args) {
// TODO Auto-generated method stub
List<item> l = new ArrayList<item>();
List<Integer> ll = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
l.add(new item(i,i));
ll.add(i);
}
System.out.println(l.get(4).getWeight());
System.out.println(ll.get(4));
}
public class item {
private static int value;
private static int weight;
public item(int val, int w) {
setValue(val);
setWeight(w);
}
public static int getValue() {
return value;
}
public static void setValue(int value) {
item.value = value;
}
public static int getWeight() {
return weight;
}
public static void setWeight(int weight) {
item.weight = weight;
}
}
这是我的代码,然后item是class两个paratemers。但是当我将项目添加到列表中时,列表中的元素具有相同的值(在这种情况下它是9)。对于整数,没有问题。我想我错过了java功能的一些关键部分。
任何帮助表示感谢,提前谢谢。
答案 0 :(得分:10)
item
的所有方法和成员都是static
。也就是说,它们属于item
类,而不是该类的特定实例。 static
成员在类的每个实例之间共享,因此您创建的每个新item
都使用相同的数据集。你会希望它们不是static
。
查看以下官方教程以获取更多信息,它们简洁明了,并且可以为您提供帮助:
static
班级成员:Understanding Class Members 完成此操作后,请Takendarkk astutely points out in a comment确保使用this.value = ...
代替item.value = ...
(不再有效)或value = ...
(使用本地范围{{1}而不是成员)。