Java 中你绝对没用过的一个关键字?

网站建设3年前发布
37 0 0

前面的文章给大家介绍了如何自定义一个不可变类,没看过的小伙伴建议去看一下,这节课给大家介绍一个 Java​ 中的一个关键字 Record​,那 Record​ 关键字跟不可变类有什么关系呢?看完今天的文章你就知道了。友情提示 Record​ 关键字在 Java14​ 过后才支持的,所以是不是被阿粉说中了,还在使用 Java 8 的你一定没用过!,我们先看一下之前定义的不可变类,代码如下。,如果你复制上面代码到 IDEA​ 中,并且刚好你的 JDK​ 版本是 Java14​ 之后的话,那么你就会看到下面这个提示,提示我们可以将 Teacher​ 这个不可变类转换为 Record。怎么样是不是很懵,没关系,我们按照提示操作一下看看会发生什么。,2023030613060958a0790053ac514f5fd4943602c5896048ed02922,点完之后我们的代码会变成下面的样子。,仔细一看你会发现,这是什么情况,record​ 是什么关键字,然后类名后面怎么还有参数?乍一看还以为变成一个方法了。此外我们之前的测试代码不用修改任何逻辑,照样可以正常运行,是不是很神奇?这就是 Record 关键字的特性。,20230306130923b8bffb71588ed32e8ca261dbdbcfad40aadf0b101,看完了 Record​ 关键字的 case​ ,我们来聊一下 Record 关键字是怎么用的,以及它有什么特性。,上面的五点里面前三点我们在之前的例子中都可以看出来,在定义和使用的时候可以明显的看到,如下所示。,下面我们看下第四点和第五点,关于第四点我们可以在 Record 类中定义静态方法用来默认初始化对象,如下所示,通过这种方式我们可以写出更简洁的代码。,在使用的时候,我们就可以直接通过类名引用静态方法就可以了,如下所示,接下来我们看看什么叫紧凑的方式进行参数校验,试想一下,如果我们需要校验在沟通 Teacher​ 对象的时候,student​ 成员变量不能为空,在我们以前的写法里面只要在构造方法里面进行一下判空就可以了,但是对于 Record 的形式,我们没有显示的创建构造方法,那我们应该如何进行判断呢?答案如下,202303061306129912b27801aa8d148fa568cfcda17e6057b14f249,可以看到我们通过一种紧凑的构造方法的形式来进行了参数的校验,这种写法跟我们普通的构造方法是不一样的,没有方法参数,怎么样是不是很神奇。,有的人说 Java 的 Record 的新特性是为了让大家不使用 Lombok 的,阿粉倒是觉得不见得,毕竟 Lombok 用起来是真的香,而且 Record  也只能是定义不可变类,在某些情况下使用还是有局限性的,不可变类的使用场景并不是很多。

© 版权声明

相关文章