我正在尝试使用对象填充ArrayList以传递给ArrayAdapter(最终)。我已经将一些代码提取到一个小型测试项目来说明问题。
我有一个名为Rules的类,它有两个成员,Gender和Age(Rules.Java)。在MyArrayTest类中,我创建了Rules对象的实例,并将它们添加到rule_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");
}
}
}
输出如下:
规则:
女 22
女 22
答案 0 :(得分:5)
您需要Gender
和Age
非 - static
否则这些字段只会为每个类成员变量保留一个值:
public String gender;
public Integer age;
除此之外: Java命名约定表明变量以小写字母开头Gender
gender
等。
答案 1 :(得分:4)
问题是您的数据成员是static
:
public static String Gender;
public static Integer Age;
这意味着它们由该类的所有实例共享。
删除static
个关键字,您就可以了。
答案 2 :(得分:1)
问题是规则类中的静态变量。删除static关键字。静态变量按类进行实例化。所以它始终采用最新值