Java 将类变量存储到数组中?

Java 将类变量存储到数组中?,java,Java,我有一个Java类,在这个类中,我声明了超过50个的大量变量,如下所示: public static final String variable_1 = "value"; .... 我想访问所有这些变量,并将它们放在另一个类中的列表中。使用for循环有什么方法可以做到这一点吗?不显式引用每个变量的唯一方法是通过 话虽如此,一个更好的方法是重构代码,这样您就不必这样做。在不显式引用每个变量的情况下,唯一可以这样做的方法是通过 话虽如此,更好的方法是重构代码,这样就不必这样做。您可以使用反射

我有一个Java类,在这个类中,我声明了超过50个的大量变量,如下所示:

public static final String variable_1 = "value"; ....
我想访问所有这些变量,并将它们放在另一个类中的列表中。使用for循环有什么方法可以做到这一点吗?

不显式引用每个变量的唯一方法是通过


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

在不显式引用每个变量的情况下,唯一可以这样做的方法是通过


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

您可以使用反射来扫描类的成员,并将名称与类似于变量的模式匹配。

您可以使用反射来扫描类的成员,并将名称与类似于变量的模式匹配。

如果您有50个,它们是相关常数,它们应该由一个或多个枚举表示,具体取决于这些常量。然后,这将提供一个自然分组,并通过values方法访问列表


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

如果您有50个,并且它们是相关常量,则它们应该由一个或多个枚举表示,具体取决于这些常量。然后,这将提供一个自然分组,并通过values方法访问列表


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

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

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

不过,正如其他人所说,这相当难看,可能表明一些糟糕的设计决策

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

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

不过,正如其他人所说,这相当难看,可能表明一些糟糕的设计决策

将它们存储在数组中对我来说毫无用处。这里有一种日常WTF的味道:Pstatic final字段可以由编译器内联。这意味着您可以使用反射来更改它们,但使用常量的代码不再将它们引用到运行时。将它们存储在数组中对我来说毫无用处。这里有一种日常WTF的味道:Pstatic final字段可以由编译器内联。这意味着您可以使用反射来更改它们,但使用常量的代码不再将它们引用到运行时。不是我的设计…我得到的是这样的..支持我扩展它…但不更改现有代码不是我的设计…我得到的是这样..支持我扩展它…但不更改现有代码