在Eclipse中,有没有一种方法可以给定一个带有已定义的setter列表的类,你可以在填充它们之前列出它们吗?
例如:
public class Test {
private String valueA;
private String valueB;
private String valueC;
private String valueD;
public void setValueA(String val) {
this.valueA = val;
}
public void setValueB(String val) {
this.valueB = val;
}
public void setValueC(String val) {
this.valueC = val;
}
public void setValueD(String val) {
this.valueD = val;
}
}
输出模板/快捷方式非常方便:
test.setValueA(value);
test.setValueB(value);
test.setValueC(value);
test.setValueD(value);
显然,4个字段的值并不存在,但是当你有100个字段时它会很好(想想JAXB Bean是一个讨厌的XML)。
注意:我不是在询问Source -> Generate Getters / Setters
菜单。
感谢。
答案 0 :(得分:2)
这在Eclipse中不可能直接实现,但肯定可以在插件中完成。
例如, plugin fluent-builder 可能会让您感兴趣:
在单元测试中实例化数据对象时,Fluent构建器特别方便
List<Movie> movies = Arrays.asList(
MovieBuilder.movie().withTitle("Blade Runner") // <- here's the builder used
.withAddedActor("Harrison Ford")
.withAddedActor("Rutger Hauer")
.build(),
MovieBuilder.movie().withTitle("Star Wars") // <- ... and also here
.withAddedActor("Carrie Fisher")
.withAddedActor("Harrison Ford")
.build());
该插件允许您使用以下wizzard为每个setter生成这种测试代码:
答案 1 :(得分:2)
我认为cat,grep和sed的非常简单的组合可能对你有用。
这是我在半分钟内写的一个例子:
cat Device.java | grep "public void set" | sed 's/.*public void /myObj./' | sed 's/int\|long|boolean\|float\|double\|String//' | sed 's/( /(/' | sed 's/ {/;
我在名为Device的类上运行它。
以下是产生的输出:
myObj.setId(ID);
myObj.setNativeId(nativeId);
myObj.setManufacturer(制造商);
myObj.setModel(模型);
myObj.setCapabilities(列表功能);
正如您所看到的,它适用于所有原语,但最后一个setter需要进行一些修改。这是因为sed命令不支持完整的正则表达式运算符集。欢迎您使用perl或awk。在这种情况下,你可以简单地说
s/\(\S+ //
,即删除之后左括号和空格后面的所有非空格字符。
我认为编写Eclipse插件是一个完美但过于昂贵的解决方案。
我在这里使用Unix shell命令。如果你运气不好:(在Windows上开发(像我一样)我建议你使用cygwin(就像我一样)。
答案 2 :(得分:0)
我不知道有什么具体的做法。但是,类大纲视图非常接近,特别是如果您调整过滤器以排除您不感兴趣的内容(例如字段,静态成员,嵌套类)。