我有一个 Java EE 项目,其中我有很多函数调用正在接收一个字符串,并且这个字符串存储在一个不一定在同一个文件中定义的常量中,它有时在一个单独的常量类中定义。我需要检查项目中的所有类并检索这些常量的值。这样做的聪明方法是什么?我考虑过使用反射并加载项目中的每个类(几百个),但我不确定这是最好的方法。
提前致谢。
我有一个 Java EE 项目,其中我有很多函数调用正在接收一个字符串,并且这个字符串存储在一个不一定在同一个文件中定义的常量中,它有时在一个单独的常量类中定义。我需要检查项目中的所有类并检索这些常量的值。这样做的聪明方法是什么?我考虑过使用反射并加载项目中的每个类(几百个),但我不确定这是最好的方法。
提前致谢。
我需要检查项目中的所有类并检索这些常量的值。
您极不可能需要这样做。您创建的 String 将是equals()
现有常量,您不应假设它必须是同一个对象。您不应该使用==
字符串,因为这是不好的做法。
但是要从字面上回答您的问题,您可以调用它,String.intern()
这将为您提供任何现有 String 常量的 String 引用。(或者相同的参考,如果它还没有被定义为这样)
因为您知道常量的所有名称并且它们在一个类(常量类)中,所以我建议只使用该类。如果常量都在一个类中,则不需要遍历所有其他类。
您可以做的是将参数设置为等于常量名称并使用反射查看常量类(并且仅该类)以获取名称与参数匹配的所有常量的值。
我不确定我是否完全理解,但基于您知道常量在哪里及其名称的事实,您可以静态导入所有常量类并使用这些值做任何您想做的事情:
public class Constants1 {
public static final String A = "A";
public static final String B = "B";
}
public class Constants12 {
public static final String C = "C";
}
导入常量:
import static constants.Constants1.*;
import static constants.Constants2.*;
public class ConstantsProcessor {
static String[] constants = {A,B,C};
}