Java 14 祭出代码简化神器,Lombok 要被干掉了?

告别老旧内核!手把手教你为Android 10设备手动更新WebView(以升级至97版为例) 本文详细指导如何在Android 10设备上手动更新WebView至97版,解决老旧内核导致的兼容性、性能和安全问题。通过ADB命令和图形化操作两种方案,无需Root即可完成升级,显著提升网页加载速度和安全性。 阅读详情

Java 14 3 月发布距现在已经发布已经3个多月了,发布了很多新特性,详细的新特性介绍可以看这篇文章:

http://www.javastack.cn/article/2020/java14-has-been-released/

栈长之前也陆续分享过两篇 Java 14 的新特性:

感觉很好玩,今天再来分享一个新特性:

JEP 359: Records (Preview)

https://openjdk.java.net/jeps/359

Java 14 祭出大器啊!!!

背景介绍

我们经常听到一些对 Java 的抱怨,"Java 太冗长啰嗦了",Java 确实经常要写很多低级(low)的代码,比如:constructors, getters, equals(), hashCode(), toString() 方法等,是不是感同身受?

如果开发人员为了偷懒而省略其中的某些方法,甚至会带来问题。

基本介绍

Records 是一种新的类申明形式,和枚举类型一样,它是一种受限制的类(class)。

简单来说,Records 就是一种新的语法糖,目的还是为了简化代码,相当于 Lombok 的 @Data注解,但又不能完全替代,现在还是个预览特性,在未来可能会有变更。

Lombok介绍及使用:

http://www.javastack.cn/article/2019/lombok-introduce/

Records 的语法是:

record Point(int x, int y) { }

用 record 修饰一个类,括号里面直接带参数,{} 里面是可选的。

到底有啥用呢?

最好理解它的方式就是实践,下面栈长通过一个示例带大家来了解下。

实践分析

怎么安装 Java 14 及环境配置这篇就不说了。

下面是一个示例:

public record Student(String name, int id, int age) {}

没错,一行搞定(public 都可以省略),就是这么简单粗暴!!!

再来看下它的类继承结构图:

我们再通过 IDEA 反编译 class 类的方式来看下它到底做了什么:

看完是不是有点 Lombok 的感觉?

1)生成的类是 final 类型的,并且继承了:java.lang.Record;

2)生成的类成员变量全是 private final 类型的;

3)自动生成了类构造器、toString()、hashCode()、equals(),以及类似 getter 的变量访问方法;

由于工具编译器的问题,上边看到的部分源代码是 /* compiled code */,我们再在 Student 类里面加入 main 方法测试下:

public record Student(String name, int id, int age) {

    public static void main(String[] args) {
        Student student1 = new Student("栈长", 1001, 18);
        System.out.println(student1.name());
        System.out.println(student1.id());
        System.out.println(student1.age());

        System.out.println(student1);

        Student student2 = new Student("栈长", 1001, 18);
        Student student3 = new Student("栈长", 1003, 18);
        System.out.println(student1.equals(student2));
        System.out.println(student1.equals(student3));
    }

}

输出结果:

栈长
1001
18
Student[name=栈长, id=1001, age=18]
true
false

从结果可以得知 toString/ equals 等生成的方法都按照特定的规则重写了,而不是使用内存地址。

可以添加成员变量吗?

不能,Records类里面不能手动加成员变量。

比如,加一个地址成员变量就编译报错了:

可以代替 Lombok 吗?

答案是:不能完全代替!

从上面的结论我们可以得知 Records 类有以下限制:

1)record 类是 final 修饰的,所以不能被其他子类继承;

2)因为 Java 类是单继承,而自身又已经继承了 Record 类,所以不能再继承其他类,但是可以实现接口;

3)成员变量也是 final 类型的,所以其值或者引用不能被更改,如果是引用类型,可以修改对象里面的值。

由于它的这些限制,想完全代替 Lombok 是不可能的,当然,不用纠结这些限制的话,某些场合是可以代替 Lombok 使用的。

总结

Java 14 Records 是一个新的语法糖,是一种 "数据载体",可以告别传统的低效的生成代码模板,现在还是预览特性,栈长我也会持续跟进,公众号第一时间推送,如果你也喜欢研究新技术,有兴趣的可以微信搜索 "Java技术栈" 关注下。

虽然现在也存在诸多限制,至少 Java 正在大步往前走,变得越来越智能、越来越简化了。

可能有些人会说,没卵用,Lombok 足已!

现在来说确实无法反驳,但是我觉得有朝一日 Java 总会干掉 Lombok,因为,Records 有十足的优势,它是 Java 自带的语法,不需要包装插件,Lombok 是团队工具,不一定都会用,你要知道,有些公司是禁止使用 Lombok 插件的。

最后,本文仅供 Java 爱好者了解、学习即可,不能用于生产,出去吹牛逼还是可以的。

有什么问题欢迎留言讨论~

Mac电脑安装burp suite2024版本记录 下载最新版本burpsuitloader-XXX-all.jar,改名为burpsuitloader.jar。目录下,修改vmoptions.txt文件,新增以下内容,如果keygen不是这个名称的话,需要修改。,点击license左侧的copy复制它,然后手动从启动台启动burpsuite。,复制如下命令到终端即可(要加双引号,不然目录中空格会导致命令截断)再复制激活响应信息到burpsuite中即可激活。后续运行burp直接从启动台运行即可。将如下框的信息复制到激活器中。输入后下一步,点击手动激活。 阅读详情

相关推荐

Matlab使用GitHub的踩坑记录(持续更新)

Matlab使用git的踩坑记录前言Matlab设置Git的官方帮助文档系统配置新建Git两种代码管理方式典型源代码管理SVN分布式源代码管理 Git注意:SVN和Git都可以用GitHub创建新的库 前言 作为Git初学者,对Git的代码版本管理非常非常喜欢,给了我极大的安全感。特别是想到之前的几次Matlab、Latex和python的代码莫名其妙被折腾没了又没法找回的悲剧,决定慢慢的走入gi...

voluntry的博客 7298

JRebel 破解最简单的使用(一)入门使用篇

RebelJRebel是一款JVM插件,它使得Java代码修改后不用重启系统,立即生效。IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费时间浪费生命。目前对于idea热部署最好的解决方案就是安装JRebel插件。

zhaozhangxiao2的博客 7488

【GIS效率手册】告别C盘爆满:三步重置ArcMap默认地理数据库路径

本文针对ArcMap用户C盘空间常被占满的问题,提供了三步重置默认地理数据库路径的详细教程。通过修改地图文档属性,将数据存储位置从C盘迁移至其他驱动器,不仅能有效释放系统盘空间,还能提升数据管理效率与安全性,是GIS数据规范化管理的关键一步。

g2h3i4j5的博客 546

jrebel破解

eclipse版本的破解 jrebel真心好用 1.先去下个破解包 2.复制jrebel6文件夹里面的jrebel.jar文件到myeclipse目录下的plugins\org.zeroturnaround.eclipse.embedder_6.4.1.RELEASE\jrebel里面 3.复制jrebel.lic到myeclipse目录下的plugins\org.zeroturnarou

goodsun00的专栏 6073

HC32 CAN通信

qqa

zhaopenglihui的博客 5438

从零构建:Esp32+Esp-IDF驱动ST7789屏幕并集成LVGL图形库

本文详细介绍了如何从零开始使用Esp32和Esp-IDF驱动ST7789屏幕并集成LVGL图形库。内容涵盖环境准备、SPI驱动配置、屏幕初始化、LVGL图形库集成及常见问题排查,帮助开发者快速实现高效稳定的显示解决方案。

weixin_42657024的博客 526

记录JRebel 破解使用

本文介绍了JRebel许可证激活的四个步骤:1)从GitHub下载安装包;2)运行安装文件;3)完成激活流程;4)设置离线模式。整个过程配有截图说明,帮助用户顺利完成JRebel的安装和激活,最终实现离线使用。该指南简洁明了,适合开发者快速完成JRebel的配置。

qq_43656810的博客 1463

Linux Namespace隔离实战:dd/mkfs/mount/unshare构建终极沙箱

内存占用 | 512MB+ | **<10MB** | 50倍节省 || 启动时间 | 15-45秒 | **0.1-0.5秒** | 100倍加速 || 磁盘空间 | GB级 | **MB级** | 显著减少 || 系统调用性能 | 有损耗 | **原生速度** | 零损耗 |

Loving_enjoy的博客 400

【转】JRebel插件安装配置与破解激活(多方案)详细教程

JRebel 介绍   IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费不少生命啊。目前对于idea热部署最好的解决方案就是安装JRebel插件,这样不论是更新 class 类还是更新 Spring 配置文件都能做到立马生效,大大提高开发效率。但是JRebel插件是需要收费使用的(巨贵),虽然插件提供了14天的试用(获取14天试用资格请...

Syd丶 7531

软件集成:Simulink与STM32联合开发

本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个STM32工程中去编译软件。最后将软件下载到STM32F407中,通过串口输出Simulink计算的结果。 阅读本文需要有一定的STM32开发调试经验和Simulink代码生成经验。关于Simulink代码生成可以参考博主的专栏《Simulink代码生成》。 文章目录1 问题引入2 集成方案3 建模与编程过程3.1 Simulink模型搭建3.2 代码生成配置3.3 STM32工程搭建3.4 STM32的main.c文件修改3.4.

u013288925的博客 2万+

基于YOLOv10深度学习的花生种子霉变检测系统

YOLO(You Only Look Once)是当前最先进的目标检测算法之一,具有快速、精准的特性。YOLOv10是YOLO系列的最新版本,相较于之前的版本,YOLOv10在特征提取、模型精度和速度上都有了显著的提升。YOLOv10采用了更深的卷积神经网络、更多的跨层特征融合方法,使得其在不同尺寸物体的检测和复杂场景的处理上都表现出了优异的性能。YOLOv10特别适合应用在需要快速处理并检测大量图像的任务中,如花生种子霉变检测等,能够实现精准、高效的检测。

2201_76125393的博客 649

idea 热部署 之 JRebel 安装及破解

作为一个小白,每当修改后台代码后都要重新启动项目,这是让人头痛的事情, 那么今天,神器来了,不逼逼,上干货。破解方法亲测有效 第一步:下载JRebel ida --&gt;File --&gt;settings --&gt;Plugins  然后点击如图所示  下面的一个红色箭头 搜索JRebel   如图 ,然后点击下载   第二步    破解 破解码   http://1...

xiaohanguo_xiao的博客 1698

【网络安全】零基础入门网络安全劝退指北

作为从16年接触网络安全的小白,谈谈零基础如何入门网络安全,有不对的地方,请多多指教。 这些年最后悔的事情莫过于没有把自己学习的东西积累下来形成一个知识体系。 后续我也会陆续的整理网络安全的相关学习资料及文章,与大家一起探讨学习。 如何入门 简单了解网络安全 网络安全就是指的确保网络系统中的数据不被别人破坏,而网安工程师就是涉及程序来维护网络安全。 网安方向有很多职位,比如安全产品工程师,安全分析师,数据恢复工程师,网络架构工程师,安全编程工程师,以及网络集成工程师等。 工作内容主要包括: 安全评测,风

互联网老辛 4594

Java最全Java 14 祭出代码简化神器,Lombok 要被干掉了?,jdk源码面试题

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取。

2401_84584609的博客 843

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java: 程序包lombok不存在_Java 14 祭出代码简化神器,Lombok 要被干掉了?

作者:栈长 来自:Java技术栈Java 14 3 月发布距现在已经发布 2 个多月,发布了很多新特性。之前也陆续分享过两篇 Java 14 的新特性,感觉很好玩,今天再来分享一个新特性:JEP 359: Records (Preview)https://openjdk.java.net/jeps/359Java 14 祭出大器啊!!!背景介绍我们经常听到一些对 Java 的抱怨,"Java 太冗...

weixin_39548740的博客 105

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java: 程序包lombok不存在_早点知道:Java 14 祭出代码简化神器,Lombok 要被干掉了?...

来源: Java技术栈链接:https://mp.weixin.qq.com/s/d5dX1ldc-Wse2PT7ODR9xAJava 14 3 月发布距现在已经发布 2 个多月,发布了很多新特性,详细的新特性介绍可以看这篇文章:http://www.javastack.cn/article/2020/java14-has-been-released/栈长之前也陆续分享过两篇 Java 14 的新...

weixin_39672680的博客 117

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring Boot 把 Maven 干掉了,正式拥抱 Gradle!

Java技术栈www.javastack.cn关注阅读更多优质文章在国外某社交网站上有一个关于迁移 Spring Boot 迁移 Maven 至 Gradle 的帖子:该贴子上也有很多人...

Java技术栈,分享最主流的Java技术 568

java stream操作string类型转换_最新 Java 核心技术教程,都在这了!

Java技术栈www.javastack.cn优秀的Java技术公众号以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货,2021最新更新版,本文会长期更新。Java 基础篇Java 多线程篇Java JVM篇Java 进阶篇Java 新特性篇Java 工具类篇Java基础篇《Java开发手册(嵩山版)》最新发布代码写成这样,老夫无可奈何!Java 中的基本数据类型转换详...

weixin_34828613的博客 1043

Java 堆和栈的区别,还傻傻分不清?

Java技术栈www.javastack.cn关注阅读更多优质文章作者:nnngu地址:https://www.cnblogs.com/nnngu/p/8300761.html堆和栈都是...

Java技术栈,分享最主流的Java技术 530

Gradle 编译速度提升 70%!只需这 3 招!

之前我司每个 Java 应用部署到预发都要等待漫长的编译打包时间,非常地痛苦!大项目编译时间常常达到接近 10 分钟,生命短暂啊,人生有多少个 10 分钟可以等待。于是我们的效能团队针对...

Java技术栈,分享最主流的Java技术 2900

最新 Java 核心技术教程,都在这了!

Java技术栈www.javastack.cn优秀的Java技术公众号以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货,2021最新更新版,本文会长期更新。Java 基...

Java技术栈,分享最主流的Java技术 1385

如何优雅的实现 try/catch 异常块?

Java技术栈www.javastack.cn关注阅读更多优质文章来源:小明的学习笔记博客地址:www.cnblogs.com/liruilong/p/13403963.html在项目中...

Java技术栈,分享最主流的Java技术 1385

What??Redis 作者退役了…

Java技术栈www.javastack.cn关注阅读更多优质文章Redis 作者 antirez 在博客公布了从 Redis 项目辞职的消息,将不再担任 Redis 项目的领导者和维护...

Java技术栈,分享最主流的Java技术 3301

牛逼!OpenJDK 源码要迁移到 GitHub 了!

Java技术栈www.javastack.cn关注阅读更多优质文章OpenJDK 项目正在从 Mercurial 迁移到 GitHub,预计在2020年9月完成。切换至 Git 代码版本...

Java技术栈,分享最主流的Java技术 666

最新!Dubbo 远程代码执行漏洞通告,速度升级

原文来自:安全客链接:https://www.anquanke.com/post/id/2091020x01 漏洞背景2020年06月23日, 360CERT监测发现 Apache Du...

Java技术栈,分享最主流的Java技术 1004

最新 Java 系列教程,共 99+ 篇,建议收藏~

以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货,国庆了,更新一波,没看过的有时间看下,希望对你有帮助。 Java基础篇 《Java开发手册(嵩山版)》最新发布 代码写成这样,老夫无可奈何! Java 中的基本数据类型转换详解 Java 父类强制转换子类原则 switch 支持的 6 种数据类型 switch多值匹配骚操作,带你涨姿势! 一张图搞清楚 Java 异常机制 10 个深恶痛绝的 Java 异常。。 通用唯一标识码 UUID 的介绍及使用 字符串拼接 + 和 concat 的区别

Java技术栈,分享最主流的Java技术 422
上一篇: Spring Boot 把 Maven 干掉了,正式拥抱 Gradle!
下一篇: 你还在使用 try-catch-finally 关闭资源?
Java奥利给
博客等级 码龄6年 150粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值