java21实战record

java程序员一直以如何让代码写的可维护性跟高,不论是框架还是代码都追求精益求精。

第一阶段:由于面向对象的要求,我们会将成员变量用私有属性修饰,但是,如果面临类中的成员变量比较多的情况下,修改会非常麻烦

第二阶段:基于字节码框架(ASM)的lombok,使用这个框架可以只需要定义成员变量,在类上增加@Data等字段就可以实现自动生成的getter和setter方法

第三阶段:jdk21带来的特性,record,可以默认生成getter和全参的构造函数

这里就重点说一下record类

 三种方式的比较

手写getter/setter lombok record
代码整体表现 字段多很乱,再加上一些继承等,会导致toString也会很臃肿 简洁 简洁
是否需要三方依赖 不需要,可以使用ide自动生成,但是修改的话也会比较麻烦 需要 不需要
易用性 一般 简单 简单
是否需要生成代理类 不需要 需要 不需要
可读 具体看代码实现 具体看注解的使用 可读
可写 具体看代码实现 具体看注解的使用 不可写
适配场景 所有场景 不发生bug的所有场景 只读场景
环境升级的影响 没有影响 可能有影响 没有影响
代码可读性 一般 一般
是否支持表单校验注解 支持 支持 不支持

有上述表格可知,没有任何一种是绝对好或者绝对差,具体的使用方式需要根据团队的编码规范来,不要自成一派

record的使用 

基础使用

定义

public record TokenResponse(String access_token, Integer expires_in) {
}

使用

@Test
public void testRecord(){
    // 不可以创建空参,会报错
    // TokenResponse token = new TokenResponse();
    TokenResponse token = new TokenResponse("token", 222);
    // 并不是getter的形式,反而更像builder
    String access_token = token.access_token();
    System.out.println(access_token);

    System.out.println(token);
}

效果

使用场景 

根据该类的返回值为可读,可以推断一下场景

1. 接受web参数

2. 函数的返回值

3. rpc的返回值

你可能感兴趣的:(java,java,spring,后端)