Eclipse getter / setter格式

时间:2009-01-27 20:05:56

标签: eclipse

有没有人知道Eclipse插件或方法让Eclipse在这一行上生成getter / setter:

public String getAbc() { return abc; }

而不是

public String getAbc() {
   return abc;
}

我正在使用Eclipse v.3.2.2。

感谢。

6 个答案:

答案 0 :(得分:12)

我不知道如何让Eclipse以你想要的格式生成它们,但是你可以在生成方法后使用这些正则表达式进行搜索/替换:

查找

(?m)((?:public |private |protected )?[\w$]+) (get|set|is)([\w$]+)\(([\w$]+(?:\[\])? [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\}

替换为:

$1 $2$3($4) { $5 }

此表达式将生成的getter和setter转换为一行。不要担心使用转换和新生成的方法混合运行它;它会工作得很好。

答案 1 :(得分:4)

我认为匹配泛型也很重要,所以正确的正则表达式是:

(?m)((?:public |private |protected )?[\w\<\>$]+) (get|set|is)([\w$]+)\(([\w\<\>$]+ [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\}

答案 2 :(得分:2)

作为regexp替换方法的一种变体,下面重新格式化空格,以便setter后跟一个空行,但getter不是。

查找

(\s(?:get|is|set)\w+\([^)]*\))\s*\{\s*(?:([^=;}]+;)\s*\}\s*(\R)|([^=;}]+=[^=;}]+;)\s*\}\s*(\R))

替换为:

$1 { $2$4 } \R$5

结果:

int getTotal() { return total; } 
void setTotal(int total) { this.total = total; } 

List<String> getList() { return list; } 
void setList(List<String> list) { this.list = list; } 

Map.Entry<String, Integer> getEntry() { return entry; } 
void setEntry(Map.Entry<String, Integer> entry) { this.entry = entry; } 

这是一种次要的审美事物,但我认为如果你正在寻找这个问题的答案,那么你可能(几乎)像我一样肛门; - )

我知道我的正则表达式条件并不像@Hosam那样严格,但我还没有经历过任何&#34;假阳性&#34;替代品。

答案 3 :(得分:1)

Eclipse中的Java代码格式化不区分getter / setter和类中的任何其他方法。所以这不能通过内置的eclipse格式来完成。

您需要:

  1. 使用前面提到的正则表达式进行搜索/替换
  2. 获取PMDCheckStyle等外部插件,并根据之前的选项强制执行正则表达式规则

答案 4 :(得分:1)

您可以使用快速代码插件来生成此类getter setter。详情请见:http://fast-code.sourceforge.net/documentation.htm#create-new-field

Create Variable

答案 5 :(得分:0)

我想发布评论作为指定的答案,但我似乎无法做到。

我修改了Hosam Aly的答案,使用表格的泛型和内部类型:

List<X>

Map.Entry

修订后的正则表达式搜索字符串是:

(?m)((?:public |private |protected )?[\w\.\<\>$]+) (get|set|is)([\w$]+)\(([\w\.\<\>$]+ [\w$]+)?\) \{\s+(return [\w\.\<\>$]+;|this.[\w$]+ = [\w$]+;)\s+\}

此正则表达式允许使用尖括号和类型中的点。

例如:

public List<String> getStringList()

public void setStringList(List<String> list)

public Map.Entry getEntry ()

替换字符串与以前相同:

$1 $2$3($4) { $5 }