有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

getter和setter的java Eclipse模板变量

我有个小问题。我试图为Eclipse中的变量创建getter模板。我想在getter方法中做的是检查变量是否为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表示返回类型未知。请帮忙

非常感谢您抽出时间


共 (1) 个答案

  1. # 1 楼答案

    Eclipse没有在getter/setter代码模板(即“生成getter和setter”工具使用的模板)中提供这样做的方法。“插入变量”列表中的变量是唯一受支持的变量

    ${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类是否使用某种类型的反射来确定要生成什么类型的对象