Does Java bean's setter permit return this?

后端 未结 10 597
一向
一向 2020-12-06 10:02

can I define setter method to return this rather than void?

Like:

ClassA setItem1() {
      return this;
}

ClassA setItem2() {
      return this;
}
         


        
10条回答
  •  北荒
    北荒 (楼主)
    2020-12-06 10:58

    The JavaBeans Specification describes a JavaBean as:

    A Java Bean is a reusable software component that can be manipulated visually in a builder tool

    They are required to provide introspection, customization, events and persistence among other properties (Section 2.1: What is a bean?)

    It is common to call a "Java Bean" to a Plain Old Java Object with accessor methods following the JavaBeans Specification (Section 7.1 and 8.3). The truth is that such object could still be far from being compliant with all the requirements.

    If the object your are defining in this class is actually a JavaBean then your method must return void according to JavaBean Specification, section 7.1 where accessor methods are described as follows:

    void setFoo(PropertyType value); // simple setter
    PropertyType getFoo(); // simple getter
    

    The section 8.3 named designed patterns for properties says:

    By default, we use design patterns to locate properties by looking for methods of the form:

    public  get();
    public void set( a);
    

    In addition, for boolean properties, we allow a getter method to match the pattern:

    public boolean is();
    

    However, if your class is just a POJO then there is nothing wrong with using your method chaining strategy because you are allowed to deviate from the specification since you are not actually building a JavaBean. Not all the classes you define are supposed to be JavaBeans after all, right?

    Your might like to take a look at the Oracle JavaBeans Tutorial.

提交回复
热议问题