2012-09-06 58 views
17

我想有我制定者返回自己制定者,這樣我可以把它們連想:生成一個在Eclipse

myPojo.setX(x).setY(y); 

平時我產生與Eclipse制定者無奈code template的setter方法可以讓我只有改變二傳手的身體,而不是簽名。

什麼是最簡單的方法來完成上述?除了搜索和替換+手動編輯? :)

+0

我認爲你可以做的最好的方法是將方法體的模板更改爲'$ {field} = $ {param};返回此;'然後自動更正所產生的編譯器錯誤。 – mercutio

+1

它很難相信日食仍然沒有這個作爲生成設置器中的複選框..... – mtyson

回答

5

您可能可以使用fluent-builders-generator plugin以您想要的方式生成設置器。

+0

我看到更多與流暢接口相關的模式比OP要求的更多。有沒有簡單設置所需模板的方法? –

+0

我認爲這個項目已經死了 – lrkwz

6

您可以使用編輯器/模板來達到此目的。要定義一個新的模板,打開Preferences窗口,然後選擇Java-> Editor-> Templates。 在這個窗口中,您可以定義一個新模板併爲其命名。例如:

public ${enclosing_type} setName(${argType} name) { 
    this.name = name; 
    return this; 
} 

給它一個名字,例如: settr。然後你可以在你的java代碼中使用這個模板,方法是輸入'settr',然後按Ctrl-Space。

+1

但是你能否讓它像setter一樣行爲,這樣'name'就是任何類變量的名字? – mercutio

+6

+1,但不幸的是,這並不影響「Source/Generate Getters and setters」 – AlexR

+0

這是一個恥辱,我無法將其與Generate setters結合使用。 – vertti

7

我可以提供一種補丁,但不需要任何額外的安裝。

轉到窗口/首選項/ Java /代碼樣式/代碼模板。編輯「二傳手體」模板如下:

${field} = ${param}; 
return this; 

現在,當你運行「生成getter和setter」它會創建setter方法,如:因爲該方法類型是void

public void setMyField(String myField) { 
    this.myField = myField; 
    return this; 
} 

這顯然會導致編譯錯誤。但是你可以點擊Ctrl-F,並用public YourClassName set替換所有'public void set'。

這是一個補丁,但它的工作原理...

+4

它不能解決真正的問題。以同樣的方式,我可以回答使用Emacs而不是Eclipse,但它也不能解決問題。 –

+1

它確實回答了最初編寫的問題。問題已經被改變。 –

0

記事本+ +解決方案:

數據:

JavaType variableName; 

搜索正則表達式:

(.*) (.*); 

更換正則表達式

public JavaType with\2\(\1 p\2\) { this.\2 = p\2; return this; } 

您必須手動更正方法名稱,因爲它不包含變量名的第一個字母。