我在Java中有这个类,我在其中声明了大量变量(超过50个):
public static final String variable_1 = "value"; ....
我想访问所有这些变量并将它们放在另一个类中的列表中。有没有办法通过使用for循环来做到这一点?
答案 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));
}
}
正如其他人所说,但这非常难看,可能表明一些糟糕的设计决定。