Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaBean约定_Java_Spring_Servlets_Javabeans_Containers - Fatal编程技术网

JavaBean约定

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

Java bean的约定之一是:

setter的返回类型必须为void。

至少大多数人都这么说。我的问题是:它真的必须是空的吗?我喜欢返回“this”而不是“void”,因为我可以像这样将方法链接在一起:

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),也提供了fluent
publicX和返回
this
的something
方法

Student s = new Student().withName("Tom").withAge(15);

好吧,我不这么认为。。你可以放心地这样做。。但我通过运行一个示例bean进行了双重检查。您可以简单地实现一个构建器模式,但仍然保留setter方法作为约定。这并不能回答问题。这也没什么意义。