2016-01-13 52 views
2

我正在尋找一種在Java(版本8)中執行的好方法什麼等效於Groovy的with方法在Object上。Groovy的對象與(閉合)方法的Java等效

說我有一個類(在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。事實上,這個揮之不去的參考文獻確實引起了我的警惕。

那麼,有沒有其他的選擇?

+0

btw,在groovy中初始化它更容易使用'new MyClass(s​​omeVar:'Hello World!')' –

+0

確實,這是一個專注於Java的人爲的例子。 –

+0

我明白了。如果你真的在groovy中使用這樣的代碼 –

回答

1

java中沒有這樣的構造,它與groovy的with等效。最接近的是提到的雙括號初始值設定項。

你想達到什麼目的?描述問題,也許在java中有一個現成的模式來解決它?

+0

感謝@Opal,你已經基本確認了前提以及其他人的意見。我想我只是錯過了Groovy重返純Java項目的工作。至於我想達到什麼目標:我正在尋找Java代碼中的簡潔性和可讀性。但是,嘿,這就是爲什麼我們現在擁有像Groovy這樣的東西。 ;) –

相關問題