有没有人知道Eclipse插件或方法让Eclipse在这一行上生成getter / setter:
public String getAbc() { return abc; }
而不是
public String getAbc() {
return abc;
}
我正在使用Eclipse v.3.2.2。
感谢。
答案 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格式来完成。
您需要:
答案 4 :(得分:1)
您可以使用快速代码插件来生成此类getter setter。详情请见:http://fast-code.sourceforge.net/documentation.htm#create-new-field。
答案 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 }