[今日疑问] Java Bean 是否还需要 getter setter(中国)

2020-03-01 22:31:35 +08:00
 brucefu
3386 次点击
所在节点    Java
5 条回复
lhx2008
2020-03-01 22:36:30 +08:00
getter 是符合贫血模型的,简单的程序保留无妨。如果是真正的面向对象或者是说充血模型,那么无脑 getter 是破坏了面向对象的封装特性,不推荐。我不用 lombok
chendy
2020-03-01 22:51:27 +08:00
具体情况具体分析
Spring 的 bean,目前除非特殊需求否则只留构造方法
数据类的就一个`@Data`搞定,如果不方便直接加就自己写
IMCA1024
2020-03-02 09:39:51 +08:00
弄一个 lombok
直接一个 @Data 我也不考虑了
passerbytiny
2020-03-02 10:03:54 +08:00
逐条回复:
1、getter setter 不是规范,是封装——面向对象编程基本元素——的要求;各大框架从来也没用 getter setter 来构造 bean,而是用它们来做序列化 /反序列化。
2、Spring 从来都没在意过 getter setter,setter 只是其推荐的其中一种注入方式;以及,直接在字段上注入的方式,并不是 Spring 推荐的注入方式。
3、请参见第一条,getter setter 是用来做封装的,不是用来写业务逻辑的,因此它必定绝大多数情况下都保持默认即可;大多数人不用,不代表没有人不会用。

因为是面向对象编程基本元素的要求,所以虽然已经众人烦了,但是没人敢让它消失。现在只能,先用 lombok 临时顶着。Lombok、C#“属性”都很好用,但是从来没有被 JCP 接纳过,以后被接纳的可能性也不太大(大概这种编译擦除的方式,争议性太大)。
liliumss
2020-03-06 23:13:19 +08:00
@passerbytiny 意思是 getter setter 就是 oop 的基础之一,去掉就失去 oop 的意义了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/648955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX