Java Bean 的约定之一是:
setter 的返回类型必须是 void。
或者至少大多数人是这么说的。我的问题是:它真的phải无效吗?我喜欢返回 "this" thay vì "void" 因为我可以像这样将方法链接在一起:
student.setName("Tom").setAge(15);
如果我返回“this”而不是“void”,那么 Spring 容器或 Servlet 容器或任何使用 Java Beans 的东西会有问题吗?
是的,setter 的返回类型phảiĐúngvoid
,以便java.beans.Introspector
将其识别为bean 属性并为其返回一个 PropertyDescriptor
。仅直接检查方法名称和参数类型的 API 将使用非 void setter ,但任何依赖于 Introspector
的 API 都不会。
解决此问题的一个很好的例子是 Amazon Web Services SDK,它提供了普通的 public void setSomething
方法(成为有效的 Java Bean)和流畅的 public X withSomething
trở lại cái này
的方法。
Student s = new Student().withName("Tom").withAge(15);
Tôi là một lập trình viên xuất sắc, rất giỏi!