列表添加功能无法正常运行?

时间:2014-11-24 22:31:57

标签: java list

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功能的一些关键部分。

任何帮助表示感谢,提前谢谢。

1 个答案:

答案 0 :(得分:10)

item的所有方法和成员都是static。也就是说,它们属于item ,而不是该类的特定实例。 static成员在类的每个实例之间共享,因此您创建的每个新item都使用相同的数据集。你会希望它们不是static

查看以下官方教程以获取更多信息,它们简洁明了,并且可以为您提供帮助:

完成此操作后,请Takendarkk astutely points out in a comment确保使用this.value = ...代替item.value = ...(不再有效)或value = ...(使用本地范围{{1}而不是成员)。