我有一个小问题.我正在尝试为
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是未知的.请帮忙.
非常感谢您的宝贵时间.
最佳答案 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 createAndEvaluate() {
return (T) new Generator().evaluate();
}
}
您的Generator类是否使用某种类型的反射来确定要生成的对象类型?