getter和setter的Eclipse模板变量

时间:2012-06-08 16:53:00

标签: java eclipse casting getter eclipse-templates

我有一个小问题。我正在尝试为Eclipse中的变量创建getter模板。我想在getter方法中做的是检查变量是否为null。如果它为null我想为它分配一个值。但问题是我需要将方法的返回值强制转换为getter返回类型。我无法管理它。这是我想要的代码:

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是未知的。请帮忙。

非常感谢你的时间。

2 个答案:

答案 0 :(得分:1)

这将完成你的工作:

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

答案 1 :(得分: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类是否使用某种类型的反射来确定要生成的对象类型?