Java ArrayList返回所有条目的最后一项

Java ArrayList返回所有条目的最后一项,java,arraylist,Java,Arraylist,我试图用对象填充ArrayList以传递给ArrayAdapter(最终)。我在一个小测试项目中提取了一些代码来说明这个问题 我有一个名为Rules的类,它有两个成员,性别和年龄(Rules.Java)。在MyArrayTest类中,我创建了Rules对象的实例,并将它们添加到rule\u parts ArrayList中。当我在数组上循环时,循环执行预期次数,但重复最后一个元素。请有人指出原因 Rules.Java public class Rules { public static Stri

我试图用对象填充ArrayList以传递给ArrayAdapter(最终)。我在一个小测试项目中提取了一些代码来说明这个问题

我有一个名为Rules的类,它有两个成员,性别和年龄(Rules.Java)。在MyArrayTest类中,我创建了Rules对象的实例,并将它们添加到rule\u parts ArrayList中。当我在数组上循环时,循环执行预期次数,但重复最后一个元素。请有人指出原因

Rules.Java

public class Rules {
public static String Gender;
public static Integer Age;


public Rules(String G, Integer C) {
//super();
    Gender = G;
    Age = C;
    }
}
主类-MyArrayTest.java

import java.util.ArrayList;


public class MyArrayTest {


private static ArrayList<Rules> rule_parts = new ArrayList<Rules>();

public static void main(String[] args) {


// Rules Array  
rule_parts.add(new Rules("Male",25));
rule_parts.add(new Rules("Female",22));

System.out.printf("\n\nRules:\n\n");
for (Rules r : rule_parts) {
    System.out.printf (r.Gender + "\n");
    System.out.printf(r.Age + "\n");


    }

}

}
import java.util.ArrayList;
公共类MyArrayTest{
私有静态ArrayList规则_parts=new ArrayList();
公共静态void main(字符串[]args){
//规则数组
增加(新规则(“男性”,25));
增加(新规则(“女性”,22));
System.out.printf(“\n\n规则:\n\n”);
对于(规则r:规则_部分){
System.out.printf(r.Gender+“\n”);
System.out.printf(r.Age+“\n”);
}
}
}
结果如下:

规则:

女性 二十二

女性
22

您需要将
性别
年龄
设置为非静态否则这些字段将仅为每个类成员变量保留一个值:

public String gender;
public Integer age;

旁白:Java命名约定表明变量以小写字母开头,表示
Gender
Gender
,等等。

问题在于您的数据成员是
静态的

public static String Gender;
public static Integer Age;
这意味着它们由类的所有实例共享


删除
static
关键字,您就可以开始了。

问题是rules类中的静态变量。删除static关键字。静态变量按类设置。因此它总是使用最新的值

从类变量中删除
static
关键字。现在您已经定义了“全局”状态——对于类的所有实例,类中的值也将始终是您上次设置的值。一般来说,除非你知道自己在做什么并且有很好的理由这样做,否则不要将任何类变量设置为静态。除Perception所说的之外:你似乎完全误解了
静态
的作用。请阅读Java教程以了解这一点。感谢您的回复。在我的应用程序中,我最初将成员设置为非静态的,但是如果不将它们设置为静态的,eclipse将无法构建项目。我重温了Java文档,现在看到了错误。请注意,这段代码以前确实构建得很好,但我最近重建了我的dev机器,它在那个时候停止了工作。如果仍然失败,我将更新代码并重新发布。