复习的面试资料
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
- 第三部分:性能调优(JVM+MySQL+Tomcat)
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
这样大大减少了一些模板代码,让逻辑更加清晰简单。一定意义上代替了Lombok。
Record 是不可变的
Record
被用来设计传输不可变的数据。从上面的例子可以看到,一个Record
类被初始化后里面的属性是不能改变的,没有Setter方法而是通过全参数构造来初始化数据,天然线程安全。
Record的超类
所有用Record
关键字声明的类都是java.lang.Record
的子类,这一点有点像枚举。
public abstract class Record {
protected Record() {}
@Override
public abstract boolean equals(Object obj);
@Override
public abstract int hashCode();
@Override
public abstract String toString();
}
从这里也可以看出所有Record
的实现都覆写了equals
、hashCode
、toString
三个方法。
❝
如何判断一个类是
Record
类?
传统方法:
Record.class.isAssignableFrom(MyRecord.class)
JDK提供了一个新的方法来解决这个问题:
MyRecord.class.isRecord()
值得一提的是Class
类还提供了getRecordComponents
来获取Record
类的成员属性信息。
RecordComponent[] recordComponents = MyRecord.class.getRecordComponents();
Record无法使用extends关键字
由于Record
类的唯一的隐式超类是java.lang.Record
,Java不支持多继承,使用 extends
显式定义会导致编译错误。
无法定义额外的成员变量
Record
类的成员变量只能通过构造声明。所以下面这种写法是错误的:
public record MyRecord(String username,Integer age) {
privite String gender;
}
但是你可以在Record
类中定义静态变量。
定义方法时需要小心
定义方法比较开放,但是请确保你定义的方法不会破坏Record
不可变的含义。不推荐定义Setter方法。
❝
另外注意
Record
类的Getter方法不是setXXXX
格式的。
使用注解
唯一需要注意的是,在Record
类的成员变量上使用注解可能会作用的Getter
方法上。就像这样:
public record MyRecord(@Deprecated String username,Integer age) {
}
编译后:
public record MyRecord(String username, Integer age) {
public MyRecord(@Deprecated String username, Integer age) {
this.username = username;
this.age = age;
}
public String getUsername() {
return this.username;
}
/** @deprecated */
@Deprecated
public String username() {
return this.username;
}
public Integer age() {
return this.age;
}
}
具体的作用域需要根据注解上的@Target
元注解的定义域来判定。
总结
–
今天介绍了如何快速集成Java 17,而且不影响已有的项目。借着这个机会也对Record
类进行了介绍和讲解,希望在你初次接触这种新定义的时候能够帮助你。原创不易,还请多多关注、点赞、再看、转发。
往期推荐
一个Bug能有多大影响:亏损30亿、致6人死亡、甚至差点毁灭世界…
六成大学生认为自己毕业10年内会年入百万!网友:知乎上多了,没被社会毒打过吧!
Java 17正式发布, Oracle宣布免费提供!“版本任你发,我用Java 8”或成历史?
Spring Boot 中使用@Async实现异步调用,加速任务执行!
技术交流群
最近有很多人问,有没有读者交流群,想知道怎么加入。加入方式很简单,有兴趣的同学,只需要点击下方卡片,回复“加群“,即可免费加入我们的高质量技术交流群!
点击阅读原文,送你免费Spring Boot教程!
最后希望可以帮助到大家!
千千万万要记得:多刷题!!多刷题!!
之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!
篇幅有限,以下只能截图分享部分的资源!!
(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)
(2)刷的算法题(还有左神的算法笔记)
(3)面经+真题解析+对应的相关笔记(很全面)
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!
Pk24hL-1715347319193)]
(3)面经+真题解析+对应的相关笔记(很全面)
[外链图片转存中…(img-gaWTqXFS-1715347319193)]
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!