1

在 Eclipse 中,有没有什么方法可以给一个具有已定义设置器列表的类,您可以在填充它们之前将它们列出来?

例如:

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菜单。

谢谢。

4

3 回答 3

2

这在 Eclipse 中不能直接实现,但肯定可以在插件中完成。

例如,插件 fluent-builder可能会让您感兴趣:

Fluent builder 在单元测试中实例化数据对象时特别方便

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());

该插件将允许您使用以下向导为每个设置器生成那种测试代码:

替代文字

于 2010-11-17T06:54:19.993 回答
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(就像我一样)。

于 2010-11-17T07:59:23.203 回答
0

我不知道有什么专门这样做的。但是,类大纲视图非常接近,特别是如果您调整过滤器以排除您不感兴趣的事物(例如字段、静态成员、嵌套类)。

于 2010-11-17T05:57:49.347 回答