JavaBean约定
Java bean的约定之一是: setter的返回类型必须为void。 至少大多数人都这么说。我的问题是:它真的必须是空的吗?我喜欢返回“this”而不是“void”,因为我可以像这样将方法链接在一起:JavaBean约定,java,spring,servlets,javabeans,containers,Java,Spring,Servlets,Javabeans,Containers,Java bean的约定之一是: setter的返回类型必须为void。 至少大多数人都这么说。我的问题是:它真的必须是空的吗?我喜欢返回“this”而不是“void”,因为我可以像这样将方法链接在一起: student.setName("Tom").setAge(15); 如果我返回“this”而不是“void”,Spring容器或Servlet容器或任何使用Java Bean的东西会有任何问题吗?可以肯定的是,您可以添加另一个私有方法,它返回SET方法中设置的对象,并在public voi
student.setName("Tom").setAge(15);
如果我返回“this”而不是“void”,Spring容器或Servlet容器或任何使用Java Bean的东西会有任何问题吗?可以肯定的是,您可以添加另一个私有方法,它返回SET方法中设置的对象,并在public void SET()中调用这个新方法。是,setter的返回类型必须是
void
,以便java.beans.Introspector
将其识别为bean属性并为其返回PropertyDescriptor
。只直接检查方法名和参数类型的API将与非void setter一起工作,但任何依赖于内省器的API都不会
一个很好的解决方法是AmazonWebServicesSDK,它既提供了普通的publicvoidsetsomething
方法(作为有效的Javabean),也提供了fluentpublicX和返回this
的something
方法
Student s = new Student().withName("Tom").withAge(15);
好吧,我不这么认为。。你可以放心地这样做。。但我通过运行一个示例bean进行了双重检查。您可以简单地实现一个构建器模式,但仍然保留setter方法作为约定。这并不能回答问题。这也没什么意义。