Java Bean 的约定之一是:
setter 的返回类型必须为 void。
或者至少大多数人是这么说的。我的问题是:它真的必须无效吗?我喜欢返回 "this" 而不是 "void" 因为我可以像这样将方法链接在一起:
student.setName("Tom").setAge(15);
如果我返回“this”而不是“void”,Spring 容器或 Servlet 容器或任何使用 Java Bean 的容器是否会出现问题?
最佳答案
是的,setter 的返回类型必须为 void
才能让 java.beans.Introspector
将其识别为 bean 属性并为其返回一个PropertyDescriptor。仅直接检查方法名称和参数类型的 API 将与非 void setter 一起使用,但任何依赖于 Introspector
的 API 都不会。
解决此问题的一个很好的例子是 Amazon Web Services SDK,它提供了普通的 public void setSomething
方法(成为有效的 Java Bean)以及流畅的 public X withSomething返回
方法。this
的
Student s = new Student().withName("Tom").withAge(15);
关于Java Bean 约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787394/