我有一个Java EE项目,其中我有很多函数调用,它接收一个字符串,这个字符串存储在一个常量中,该常量不一定在同一个文件中定义,它有时在一个单独的常量类中定义。我需要遍历项目中的所有类并检索这些常量的值。什么是聪明的方法来做到这一点? 我考虑过使用反射并加载项目中的每个类(几百个),但我不确定这是最好的方法。
提前致谢。
答案 0 :(得分:0)
因为你知道常量的所有名称并且它们在一个类(常量类)中,所以我建议只使用该类。如果常量都在一个类中,则不需要遍历所有其他类。
你可以做的是将参数设置为等于常量名称,并使用反射查看常量类(并且只查看该类)以获取具有与参数匹配的名称的所有常量的值。
答案 1 :(得分:0)
我需要遍历项目中的所有类并检索这些常量的值。
您极不可能需要这样做。您创建的String将是equals()
到现有常量,您不应该认为它必须是同一个对象。你不应该使用==
作为字符串,因为这是不好的做法。
但是要从字面上回答你的问题,你可以调用String.intern()
这将为你提供任何现有String常量的String引用。 (如果尚未定义,则为相同的参考)
答案 2 :(得分:0)
我不确定我是否完全理解,但基于你知道常量在哪里及其名称的事实,你可以静态导入所有常量类,并用值做任何你想做的事情:
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};
}