5

对于 MVC 模型类,我的设置器看起来像:

enum BoundProperty {FIELD_NAME, ...}

private Type fieldName;

public setFieldName(Type newValue) {
    Type oldValue = fieldName;
    fieldName = newValue;
    firePropertyChange(BoundProperty.FIELD_NAME, oldValue, newValue);
}

给定一个字段,这个输出可以从自动生成的 setter 中产生吗?如果没有,有没有办法从模板中获取这个输出?

输出应该 CamelCase 字段名称以生成方法名称,因此 fieldName 生成 setFieldName() 和大写字段名称以生成属性枚举。

所以 fieldName 生成FIELD_NAME(或者FIELDNAME也可以工作)。

4

3 回答 3

1

我可以在“生成 getter/setter”对话框中看到此消息。 getter/setter 的格式可以在代码模板首选项页面上配置。您可以去那里(Setter BodyCode部分下)并进行如下修改。

Type oldValue = ${field};
${field} = ${param};
firePropertyChange(BoundProperty.FIELD_NAME, oldValue, ${param});

但是,它不会生成BoundProperty。它需要更多的研究来确定它是否可能。这些链接可能会有所帮助

有用的 Eclipse Java 代码模板Eclipse 代码模板入门

于 2012-01-17T13:28:18.820 回答
1

我认为没有一种直接的方法可以通过 Eclipse 模板来实现这一点,主要是关于 camelCase/upperCase 和枚举值的生成。可以查看这两个问题Eclipse(Helios)代码模板中,有没有办法将变量值的首字母大写,以编程方式添加代码模板?深入了解更多细节。

恕我直言,实现您想要的最佳方式是使用Fast Code Eclipse 插件并为该插件编写一个速度模板,该模板会从字段中生成所有代码。

enum BoundProperty {
#foreach ($field in ${fields})
    ${field.toUpperCase()} #if( $foreach.hasNext ), #end
#end
}

#foreach ($field in ${fields})
    public ${field.type} get${field.name.substring(0,1).toUpperCase()}${field.name.substring(1)}(${field.type} newValue) {
        Type oldValue = fieldName;
        fieldName = newValue;
        firePropertyChange(BoundProperty.${field.name.toUpperCase()}, oldValue, newValue);       
    }
#end

或更改该插件的“getter_setter”模板

于 2012-01-17T14:48:58.640 回答
0

Fast Code Eclipse Plugin看起来像一个选项,但我安装它时遇到错误,我没有时间去追,用户qualidafial提供的关于Useful Eclipse Java Code Templates的问题的答案可以完成我需要做的所有事情,而无需Eclipse 插件。

于 2012-01-18T15:54:33.317 回答