4

我正在尝试使用要传递给 ArrayAdapter 的对象填充 ArrayList(最终)。我已经将一些代码提取到一个小型测试项目中来说明这个问题。

我有一个名为 Rules 的类,它有两个成员,Gender 和 Age (Rules.Java)。在 MyArrayTest 类中,我正在创建 Rules 对象的实例并将它们添加到 rule_parts ArrayList。当我遍历数组时,循环会执行预期的次数,但会复制最后一个元素。请有人指出原因。

规则.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

4

3 回答 3

5

您需要 make否则Gender这些字段将只保留每个类成员变量的单个值:Agestatic

public String gender;
public Integer age;

另外: Java 命名约定表明变量以小写字母开头 Gender gender,等等。

于 2013-03-16T23:03:17.413 回答
4

问题是您的数据成员是static

public static String Gender;
public static Integer Age;

这意味着它们由类的所有实例共享。

删除static关键字,你会很高兴。

于 2013-03-16T23:03:29.680 回答
1

问题是规则类中的静态变量。删除 static 关键字。静态变量是按类实例化的。所以它总是取最新的值

于 2013-03-16T23:09:58.110 回答