java - getter 和 setter 的 Eclipse 模板变量

标签 java eclipse casting getter eclipse-templates

我有一个小问题。我正在尝试为 Eclipse 中的变量创建 setter/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 说 return_type 未知。请帮忙。

非常感谢您的宝贵时间。

最佳答案

Eclipse 不提供在 getter/setter 代码模板(即“生成 Getters 和 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 类是否使用某种类型的反射来确定要生成的对象类型?

关于java - getter 和 setter 的 Eclipse 模板变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952968/

相关文章:

c# casting 问题

java - 如何使用枚举生成 switch 语句框架

java - 表达式分词器

c++ - 英语和希腊语 UTF 字符差异

java - 碰撞检测在 2d android 中不起作用

C# 为什么这里不需要显式强制转换?

java - 将数据类型从 DB 类型转换为 java 数据类型

java - 使用 GridBagLayout 将 JPanel 中的组件居中

java - 我不明白 System.out.println((char)b) 和 System.out.write((char)b) 之间的输出差异

java - 如何在 Eclipse 中创建 jbpm6 web 应用程序?