2015-12-21 53 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的确。固定! :) –