将类变量存储到数组中?

时间:2011-10-31 13:18:21

标签: java

我在Java中有这个类,我在其中声明了大量变量(超过50个):


    public static final String variable_1 = "value";
    ....

我想访问所有这些变量并将它们放在另一个类中的列表中。有没有办法通过使用for循环来做到这一点?

4 个答案:

答案 0 :(得分:2)

在没有明确引用每个变量的情况下,您可以执行此操作的唯一方法是reflection

话虽如此,更好的方法是重构代码,这样你就不必这样做了。

答案 1 :(得分:1)

您可以使用反射来扫描班级成员,并使用"variable_"等模式匹配名称。

答案 2 :(得分:1)

如果你有50个,并且它们是相关的常量,它们应该由枚举(或几个枚举取决于常量)来表示。然后,这将通过values()方法提供自然分组和对列表的访问。

您当前尝试的内容听起来像代码味道。

答案 3 :(得分:0)

您可以使用反射API,如下所示:

for (Field f : MyClass.class.getDeclaredFields()) {
    if (f.getName().startsWith("variable_")) {
        System.out.println("Field " + f.getName() + " with value " + f.get(null));
    }
}

正如其他人所说,但这非常难看,可能表明一些糟糕的设计决定。