以前我们定义类都是用class
关键词,但从Java 16开始,我们将多一个关键词record
,它也可以用来定义类。record
关键词的引入,主要是为了提供一种更为简洁、紧凑的final
类的定义方式。
下面就来具体了解record类的细节。
声明record类
声明record类的基础语法:
record range(int start, int end){} |
我们知道class类可以在单独文件中生命,也可以在其他类中申明。那么record类也一样,它有这几种申明方式:
- 单独文件申明:
public record range(int start, int end){} |
- 在类内部申明:
public class DidispaceTest { |
- 函数内申明:
public class DidispaceTest { |
如果你还想了解更多关于Java新特性的内容的话,长期连载的免费Java新特性专栏:https://www.didispace.com/java-features/,文档形式学习Java新特性,阅读学习体验更佳!
record类详解
在知道了如何申明之后,你一定会想用record
申明的就那么点元素,它到底会具备什么能力呢?
因为record
关键词申明类主要是为了简化一些类的申明,所以它本质就是一类特殊的class,或者说是某一个模版的class。
record
申明的类,具备这些特点:
- 它是一个
final
类 - 自动实现
equals
、hashCode
、toString
函数 - 成员变量均为
public
属性
所以,对于之前写的range类,它等价于一个这样的类:
public final class range{ |
因为一些函数是隐藏的,在range定义的时候,我们看不到,所以我们可以尝试写这样一段测试代码来验证一下:
range r = new range(100, 200); |
定义成员函数
因为record
申明的本质也是类,那么定义成员函数肯定也是可以的。
比如,我们可以这样在record
类中定义成员函数:
record range(int start, int end){ |
然后,就可以这样调用它:
range r = new range(100, 200); |
如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要走开,关注我,持续更新Java新特性专栏!
本文由
程序猿DD 创作
版权声明:自由转载-非商用-非衍生-保持署名 (CC BY-NC-ND 3.0)
原创不易,转载请注明出处,感谢支持!如果本文对您有用,欢迎转发分享!
暂无评论内容