record 替代 lombok, 我觉得不行

这篇具有很好参考价值的文章主要介绍了record 替代 lombok, 我觉得不行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

你要适应我 坚定我 我才能发挥我百分百的甜

record

record是Java 14中引入的一个新特性,它是一种类似于类的结构,但用于表示不可变数据。相比于传统的Java类,record在定义数据类时更为简洁、易读和易用。

record通常用于表示一些轻量级的数据类型,如DTO(数据传输对象)、VO(值对象)、POJO(简单Java对象)等。record的定义方式类似于类,但使用关键字“record”代替了“class”,并可以使用“final”关键字来保证实例的不可变性。

下面是一个简单的record的例子:

record Person(String name, int age) {}

上面这个record定义了一个名为Person的数据类,它有两个属性:name和age。通过这个定义,我们可以很方便地创建一个Person对象:

Person person = new Person("Tom", 20);

可以看到,创建Person对象的方式和创建普通Java对象的方式非常相似。但是,与普通Java对象不同的是,我们不能直接修改record对象的属性值。如果想要修改对象的属性,我们需要创建一个新的对象。

此外,record还提供了一些其他的有用特性,例如自动实现equals()、hashCode()和toString()方法等。在实际开发中,使用record可以帮助我们更好地组织代码,提高代码的可读性和可维护性。

可替代 lombok 否?

使用record可以让我们避免手写getter和setter方法。实际上,record可以自动为每个属性生成对应的getter方法,这些方法可以通过属性名直接调用,如person.name()。而且,record还可以自动生成equals()、hashCode()和toString()等方法的实现,这些方法通常需要我们手动编写。

提供setter方法吗?

record是一种不可变的数据类,因此它并没有提供默认的setter方法。如果我们需要修改record对象的属性值,我们需要创建一个新的对象。比如,我们可以通过使用withXxx()方法来创建一个新的record对象,该方法会返回一个新的对象,同时修改指定的属性值,例如:

record Person(String name, int age) {}

Person person = new Person("Tom", 20);
Person newPerson = person.withAge(21); // 创建一个新的Person对象,同时修改年龄属性为21

在上面的例子中,我们通过withAge()方法来创建一个新的Person对象,同时修改年龄属性为21。这个新的Person对象与原来的对象不同,它是一个全新的对象,原来的对象并没有被修改。需要注意的是,withXxx()方法并不是在原来的对象上进行修改,而是创建一个新的对象,因此record仍然是不可变的。

算浅拷贝吗?

如果在record的构造函数中使用了另一个类的对象,那么在调用withXxx()方法修改属性时,会复制该对象的引用。这种情况下,withXxx()方法的行为就类似于浅拷贝。也就是说,新对象和原对象共享同一个引用类型属性的值,修改其中一个对象的该属性值也会影响到另一个对象。这是因为在Java中,对象之间的赋值是基于引用的,复制引用类型属性的时候,只是复制了对象的地址,而不是对象本身。

需要注意的是,即使在record的构造函数中使用了另一个类的对象,record本身仍然是不可变的。也就是说,修改record对象的属性值仍然需要创建一个新的对象,同时复制原对象的属性值并修改指定的属性值。只不过,如果原对象包含引用类型的属性,修改该属性值时需要注意共享对象的情况。

总结

相比于传统的Java类,使用record可以让我们更加专注于数据本身,而不是getter和setter方法的实现。同时,它还可以减少代码的冗余,提高代码的可读性和可维护性。值得注意的是,虽然record提供了许多便利的功能,但并不适用于所有的情况,有些情况下我们仍需要手写Java类和对应的方法。文章来源地址https://www.toymoban.com/news/detail-410749.html

到了这里,关于record 替代 lombok, 我觉得不行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学node 之前你要知道这些

       19年年底一个偶然的机会接到年会任务,有微信扫码登录、投票、弹幕等功能,于是决定用node 来写几个服务,结果也比较顺利。   当时用看了下koa2的官方文档,知道怎么连接数据库、怎么映射表实体,怎么处理http,怎么处理异常等,就可以直接写起来了。从应用层

    2024年02月03日
    浏览(44)
  • 为啥外行都觉得程序员的代码不值钱?

    不,代码是值钱的! 前几天我们一直服务的一个客户觉得自己用了两三年的UI太丑,乞求我们换一套。集团领导讨论后一口报价30w,牛逼哄哄说:很麻烦的啊,要先设计UI库,然后把所有页面都换个样,又要测试这玩意(内行人都明白前端能测出啥bug,也就可能要考虑优化)

    2024年02月08日
    浏览(46)
  • 微服务开发,这10个点你要知道

    微服务架构是一种软件开发模式,它将一个复杂的应用程序拆分为多个个独立的、小型的、可复用的服务,每个服务负责一个特定的业务功能。 微服务架构有许多优点,例如提高系统的可扩展性、可维护性、可测试性和故障容忍性。 但是,微服务架构也有很多问题需要注意

    2024年02月04日
    浏览(40)
  • python中有哪些你觉得超级牛的模块?

    之前在做数据分析的时候,用过一个自动化生成数据探索报告的Python库: ydata_profiling 一般我们在做数据处理前会进行数据探索,包括看统计分布、可视化图表、数据质量情况等,这个过程会消耗很多时间,可能需要上百行代码才能实现。 ydata_profiling能够直接完成数据探索的

    2024年02月06日
    浏览(42)
  • uniapp 地图如何添加?你要的教程来喽!

    地图在 app 中使用还是很广泛的,常见的应用常见有: 1、获取自己的位置,规划路线。 2、使用标记点进行标记多个位置。 3、绘制多边形,使用围墙标记位置等等。 此篇文章就以高德地图为例,以上述三个常见需求为例,教大家如何在 uniapp 中添加地图。 作为一个不管闲事

    2024年02月11日
    浏览(44)
  • PyCharm vs VSCode,程序员会觉得哪个更好?

    也许是我有些落伍,或者也是因为JetBrains在PythonIDE的市场上占有很大的份额,以至于直到最近我才发现,使用VSCode的Python开发者要比预想中的多很多。 近期,我将PyCharm和Notebooks放在一起用了一段时间,发现Notebooks方便浏览数据,并将数据实时可视化;PyCharm则可以完成更多的

    2024年02月10日
    浏览(59)
  • 自学web前端觉得好难,可能你遇到了这些困境

    好多人跟我说上学的时候也学过前端,毕业了想从事web前端开发的工作,但自学起来好难,快要放弃了,所以我总结了一些大家遇到的困境,希望对你会有所帮助。   目录 1.  意志是否坚定 2. 没有找到合适自己的老师 3. 为了找到工作,啥都想学  4. 学习途中遇到问题怎么办

    2024年02月02日
    浏览(105)
  • 为什么我觉得Rust比C++复杂得多?

    Rust自学确实有一定门槛,很多具体问题解决起来搜索引擎也不太帮的上忙,会出现卡住的情况,卡的时间长了就放弃了。最近很多小伙伴找我,说想要一些c语言资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「c语言专业入门到高级教程+工具包」,

    2024年02月08日
    浏览(52)
  • 解决红米手机音量调到最小仍然觉得声音大

    手机型号:redmi k60 MIUI版本:MIUI 14.0.28 解决方法: step1:打开手机的设置界面,找到“声音与触感”    step2:点击进入,找到“声音助手” step3:点击进入, 打开“多应用媒体音调节”  这样子就可以了,在使用音量键调节音量时就会出现两个音量调节,一个是手机的媒体音量调节

    2024年04月10日
    浏览(168)
  • 【设计模式】阿里终面:你觉得这个例子是策略模式吗?

    策略模式,举几个贴近生活的例子:当我们出行的时候,不同的出行方式就是不同的策略,例如走路、开车、骑自行车、坐飞机、坐邮轮等等,每一种出行方式都代表着不同的费用和时间;当我们去商场超市的时候,可能正好打折,也可能正好满减,又或者积分返利等等**,

    2024年01月24日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包