【问题标题】:Modified Java Beans setter to return the Bean Class conflicts with Bean-Framework修改 Java Beans setter 以返回 Bean Class 与 Bean-Framework 冲突
【发布时间】:2017-03-21 04:25:53
【问题描述】:

为了支持流畅的编程风格,我最近修改了我们的 Java Beans setter 方法以返回 Bean 类。 但是现在 Java Beans Activation Framework (rel 1.1) 不再找到 setter,因为它们不会返回 void。 不允许简单地添加返回类型为 void 的新 setter,因为方法不仅必须在返回类型上有所不同。 有解决办法吗?

【问题讨论】:

  • 将 bean 包裹在一个 beanfacade 中,并为后者添加 fluent stile。有一个重构可以在某些 IDE 中创建一个外观,它使用委托实现所有方法,例如 stackoverflow.com/questions/6357784/…
  • 请注意,JavaBeans 定义指定 setter 方法应返回 void。更改 JavaBean 的签名可能会使其与基于此假设的某些框架或库不兼容。

标签: java javabeans


【解决方案1】:

我使用三种类型的方法来解决这个问题:Getters、Setters 和 Withers。 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; }

}

【讨论】:

  • 我喜欢这个主意。我想要一个你可以在不修改类的情况下调用任何类的结构。也许与三元运算符有关?
  • 我想你的意思是返回this,即MyBean的实例
  • @Stroboskop 确实如此。固定的! :)
猜你喜欢
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 2015-05-26
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多