2

Java Bean 的约定之一是:

setter 的返回类型必须是void

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

student.setName("Tom").setAge(15);

如果我返回“this”而不是“void”,那么 Spring 容器或 Servlet 容器或任何使用 Java Beans 的东西会有问题吗?

4

2 回答 2

4

是的,setter 的返回类型必须void为了将java.beans.Introspector其识别为 bean 属性并为其返回 a PropertyDescriptor。直接检查方法名称和参数类型的 API 将与非 void setter 一起使用,但任何依赖于它的东西Introspector都不会。

解决此问题的一个很好的例子是 Amazon Web Services SDK,它提供了普通public void setSomething方法(成为有效的 Java Bean)和public X withSomething返回this.

Student s = new Student().withName("Tom").withAge(15);
于 2013-02-09T11:21:13.597 回答
-2

可以肯定的是,您可以添加另一个私有方法,该方法返回在您的 SET 方法中设置的对象,并在public void set()中调用这个新方法

于 2013-02-09T11:06:44.543 回答