5

不确定我的措辞是否正确。如果您需要更多信息,请告诉我。我们有一个需求,我们需要根据系统环境变量来确定变量的类型。

所以,假设我们有以下课程

class Test
{
    DUMMY_TYPE testVariable;
}

DUMMY_TYPE 是根据系统变量确定的。那么当Java编译时,是否可以让Java在编译类型时使用系统环境变量来确定类型呢?

此外,是否可以在 Eclipse 上以某种方式进行设置,无论我在哪里使用,Eclipse 都会继续在 IDE 上向我显示 DUMMY_TYPE,但是在编译和构建它时,可以根据环境变量将 DUMMY_TYPE 替换为正确的类型?

4

1 回答 1

1

我有个主意。

制作testVariableof 类型Object(或DummyType扩展的类Object)。然后,您可以根据从系统变量中读取的内容,使用原始包装类使用您想要的任何数据加载变量。

所以:

public class Test {

    Object testVariable;

    {
        String whichType = null;

        //Logic to read your system variable from wherever and store it in whichType

        if(whichType.equals("int")) {
            testVariable = new Integer(intVal);
        }
        else if(whichType.equals("double")) {
            testVariable = new Double(doubleVal);
        }
        //etc.
    }

当然,这并不是 Java 在编译时像你想要的那样“弄清楚”它是哪种类型,必然(并且分配将在运行时发生,当Test对象被创建时),但这似乎是一个合理的框架选择。

当然,您也可以根据需要设置testVariable初始化时的值。

或者,你可以有一个像这样的方法,它接受输入作为String(从你的系统变量中读取)并在原始类型的适当包装类中返回它:

public Object getPrimitiveValue(String type, String value) {
    if(type.equals("int")) {
        return new Integer(Integer.parseInt(value));
    }
    else if(type.equals("double")) {
        return new Double(Double.parseDouble(value));
    }
    //etc.
}
于 2013-03-06T18:31:23.597 回答