获得常数的价值

时间:2012-09-02 16:58:22

标签: java

我有一个Java EE项目,其中我有很多函数调用,它接收一个字符串,这个字符串存储在一个常量中,该常量不一定在同一个文件中定义,它有时在一个单独的常量类中定义。我需要遍历项目中的所有类并检索这些常量的值。什么是聪明的方法来做到这一点? 我考虑过使用反射并加载项目中的每个类(几百个),但我不确定这是最好的方法。

提前致谢。

3 个答案:

答案 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};

}