Java Bean 约定

标签 java spring servlets javabeans containers

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/

相关文章:

java - Spring Boot 和 Amazon AWS - 如何使用 Spring Cloud AWS 连接到 S3?

java - 如何选择使用 List<String> 作为 Repository 的输入?

Java servlet : do parameters sent with doGet() get encoded using HTTPS?

java - jhipster不缓存查询结果

java - 将 getText() 与 double 一起使用

Java : declaring objects in a loop

android - 将字符串转换为 json 对象

java - TimeZone.observesDaylightTime() 需要 API 级别 24;是否有可能在旧的 API 版本中获得它?

java - 如果有另一个具有手动设置属性的同一类的 bean,则不会发生 Autowiring

Java Servlet - 下载并转发到页面