Java相当于groovy的Object with(Closure)方法

时间:2016-01-13 03:27:45

标签: java groovy

我正在寻找一种很好的Java方法(版本8),相当于Object上的Groovy with方法。

假设我有一个类(用Java完成,所以我可以在每个中使用):

class MyClass {
  private String someVar;

  public void setSomeVar(String newVal) {
    this.someVar = newVal;
  }

  public String getSomeVar() {
    return this.someVar;
  }
}

在Groovy中,我可以:

def mc = new MyClass().with {
  setSomeVar('Hello World!') // Yes, I'm using an explicit setter for clearer comparison
  it // return the instance
}

在Java中,我能想到的最接近的是使用双括号初始化器:

MyClass mc = new MyClass(){{
  setSomeVar("Hello World!");
}};

然而some advise against using the double brace initializer。事实上,挥之不去的引用确实让我谨慎。

那么,还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

java中没有这样的构造,相当于groovy的with。最接近的是提到的双支撑初始化器。

你想要达到什么目的?描述问题,也许在java中有一个现成的模式来解决它?