5

これを正しく表現しているかどうかはわかりません。さらに情報が必要な場合はお知らせください。システム環境変数に基づいて変数のタイプを決定する必要があるという要件があります。

したがって、次のクラスがあるとします

class Test
{
    DUMMY_TYPE testVariable;
}

DUMMY_TYPE は、システム変数に基づいて決定されます。では、Java のコンパイル時に、Java にシステム環境変数を使用してコンパイル タイプのタイプを決定させることは可能ですか?

また、Eclipse で何らかの方法でこれを設定することはできますか?

4

1 に答える 1

1

考えがある。

testVariableObject(または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 に答える