2015-12-21 68 views
2

爲了支持Fluent編程風格,我最近修改了我們的Java Bean setter方法以返回Bean類。 但是現在Java Beans Activation Framework(rel 1.1)不再找到setter,因爲它們不會返回void。 僅僅添加一個返回類型爲void的新setter是不允許的,因爲方法不僅在返回類型上不同。 是否有解決方法?修改的Java Bean setter返回與Bean-Framework的Bean類衝突

+0

將bean包裝在beanfacade中,並將流暢的stile添加到後者。有一個重構在一些IDE中創建一個facade,它使用一個委託來實現所有的方法,比如http://stackoverflow.com/questions/6357784/can-eclipse-auto-generate-an-interface-of-a-3rd- party-library-class –

+0

請注意,JavaBeans定義指定setter方法應該返回'void'。更改JavaBean的簽名可能會使其與基於此假定的某些框架或庫不兼容。 – scottb

回答

1

我用三種方法解決了這個問題:Getters,Setters和With ers。 Withers支持流暢的編程,我提供getter和setter來滿足Bean的假設。例如:

public class MyBean { 

    private int value; 

    public int getValue(){ return this.value; } 

    public void setValue(int v){ this.value = v; } 

    public MyBean withValue(int v){ setValue(v); return this; } 

} 
+0

我喜歡這個想法。我希望有一種建築可以在任何課堂上進行調用,而無需修改課程。可能與三元運算符有什麼關係? – ggb667

+0

我想你的意思是返回'this',即MyBean的實例 – Stroboskop

+0

@Stroboskop的確。固定! :) –