4

ちょっとした質問があります。Eclipse 内の変数のゲッターのテンプレートを作成しようとしています。getter メソッドでやりたいことは、変数が null かどうかを確認することです。null の場合は、値を割り当てたいと思います。ただし、問題は、メソッドの戻り値をゲッターの戻り値の型にキャストする必要があることです。私はそれを管理できませんでした。これが私がしたいコードです:

Integer someInt;
Double someDoub;
Long someLong;

public Integer getSomeInt(){
    if(someInt == null) someInt = (Integer) new Generator().evaluate();
    return someInt;
}

public Double getSomeDoub(){
    if(someDoub == null) someDoub = (Double) new Generator().evaluate();
    return someDoub;
}

これは私が生成したいコードです。テンプレートとして入力したものは次のとおりです。

if( ${field} == null){
    ${field} = ( ${return_type} ) new Generator().evaluate();
}
return ${field};

これを入力するとすぐに。Eclipse は、return_type が不明であると言います。助けてください。

どうぞよろしくお願いいたします。

4

2 に答える 2

1

これはあなたの仕事をします:

 if( ${field} == null){
        ${field} =   ${field}.getClass().cast( new Generator().evaluate());
    }
    return ${field};
于 2012-06-08T17:31:34.650 に答える
1

Eclipse は、getter/setter コード テンプレート (つまり、"Generate Getters and Setters" ツールが使用するテンプレート) でこれを行う方法を提供していません。「変数の挿入」リストの変数のみがサポートされています。

${return_type}通常のテンプレート (つまり、コード補完ホットキーを使用して呼び出すタイプ) でのみ使用できます。

考えられる回避策として、キャストの必要性を回避するために、ジェネリック化された静的ファクトリ メソッドを作成してデフォルト オブジェクトを生成することができます。

public class MyBean {
    Integer someInt;
    Double someDoub;

    public Integer getSomeInt(){
        if (someInt == null) someInt = GeneratorUtil.createAndEvaluate();
        return someInt;
    }

    public Double getSomeDoub(){
        if (someDoub == null) someDoub = GeneratorUtil().createAndEvaluate();
        return someDoub;
    }
}

public class GeneratorUtil {
    @SuppressWarnings("unchecked")
    public static <T> T createAndEvaluate() {
        return (T) new Generator().evaluate();
    }
}

あなたのGeneratorクラスは、生成するオブジェクトのタイプを決定するために何らかのタイプのリフレクションを使用していますか?

于 2012-06-08T17:35:04.963 に答える