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模板网!

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

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

相关文章

  • 你要知道的密评改造方案

    概述 多乐为将自身多年来在信息安全领域的实践经验融入到商用密码产品研发和建设之中,联合密评咨询、测评等合作伙伴,针对涉及国家安全和社会公共利益等重要领域网络和信息系统,参照商用密码应用安全性评估标准,来设计全流程国产密码改造合规解决方案,建设完

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年01月24日
    浏览(32)
  • DDD学习与感悟——总是觉得自己在CRUD怎么办?

    DDD全名叫做Domins drives Design;领域驱动设计。再说的通俗一点就是:通过领域建模的方式来实现软件设计。 问题来了:什么是软件设计?为什么要进行软件设计? 软件开发最主要的目的就是:解决一个问题(业务)而产生的一个交付物(系统)。而软件设计旨在高效的实现复

    2024年02月05日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包