文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

宁可用Lombok也不把成员设置为public原理解析

2023-03-06 08:57

关注

思考一个问题,为何属性是private,然后用get/set方法?

普遍想法

下面系统的分析一下,why?

1、采用get/set方法其实是Java的一个协议,在1996年12月提出的java bean1.00-A,通过统一的规范可以设置对象的值(比如get、set方法)。很多框架也是在此基础上开发的,底层源码也都是通过get/set访问属性的。

2、很多时候,可以通过get/set方法,① 增加一些功能;② 增加一些特定的修改,比如打折;③ 增加一些访问逻辑;④ 还可以通过set方法触发一些事件。

3、如果你将一个属性定义为public了,而且在50处调用了,此时,产品经理来了一个需求,将此次的促销商品打五折;难道你要去修改这50处的代码吗?如果你用get/set封装了,修改对应属性的set方法即可,so easy~!

4、就像上面所说,大家都这么写,我也这么写,但是,对于大多数企业应用来说,直接将属性写成public,也是没毛病。

5、也可以理解为,“风格统一的代码更好维护”。

6、假如我新接手一个项目,要用到某个bean,我也不知道都有什么属性,一般的做法都是先new一个,然后通过小数点联想出来,如果没有get/set,那真的很烦躁。

7、现在都是面向接口编程,而Java接口中是不能定义普通的属性的,但可以定义get/set方法。

来,一起回味一下封装的概念。

封装是指一个对象对其他对象隐藏其部分状态和行为,而仅向程序其他部分暴露有限的接口的能力。封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式(或者叫函数)来访问内部信息或者数据。对于封装这个特性,我们需要编程语言本身提供一定的语法机制来支持。这个语法机制就是访问权限控制。

Lombok应运而生

为了解决get/set的代码臃肿问题,Lombok应运而生。简单无脑,解决一切烦恼。

使用 Lombok 可以让代码更加简洁,减少冗余的代码量。使用 Lombok 时,可以使用注解来生成常用的代码,如 getter、setter、equals、hashCode 和 toString 方法,这些方法通常都是在 Java 类中需要手动编写的。 使用 Lombok 可以省去这些手动编写的步骤,使代码更加简洁。此外,使用 Lombok 还有一个好处是可以使用注解来生成构造函数和静态构造函数,这些构造函数可以接受所有属性作为参数。这样就可以避免手动编写很多构造函数的情况。因此,使用 Lombok 可以让代码更加简洁,减少冗余的代码量,提高代码的可读性和可维护性。

Lombok代替public,因为public成员的可见性太大。将成员定义为public意味着任何地方都可以访问这个成员,这可能会导致成员被意外地修改,从而影响类的稳定性和正确性。而使用Lombok可以通过自动生成getter和setter方法来保护成员的可见性,从而提高类的封装性和可维护性。此外,使用Lombok还可以帮助开发人员减少编写重复的代码,提升工作效率。

因此,为了保护成员的可见性并提升代码的可维护性,许多人宁可使用Lombok,也不愿意将类的成员设为public。

不和谐的声音,禁止使用Lombok?

1、jdk版本问题

目前国内大多数Java项目,采用的都是JDK1.8,因为它够稳定,功能也完全够用,但是,如果哪一天,你的客户心血来潮,就是想用JDK11,甚至JDK17,此时,你会发现Lombok不好用了,于是,不得不将好几百个实体类,通过idea生成get/set、equals、toString等方法,很烦躁。

2、开始营业

当你的客户获取到你的源代码之后,他也想看看,运行一下,此时发现没安装Lombok,报错了,安装Lombok,不了解这是什么,还要去百度学习一下,被 迫营业,很烦躁。

3、可读性差

4、使用Lombok,写代码的时候很爽,但它

这是一种弊大于利、得不偿失的操作。

总结

综上所述,将成员变量定义为public是不可取的,使用Lombok也不是一个明智的选择,还是老老实实的通过IDE生成get/set方法吧。

以上就是宁可用Lombok也不把成员设置为public原理解析的详细内容,更多关于Lombok public 成员设置的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯