当前位置: 首页 > news >正文

【每天学个新注解】Day 10 Lombok注解简解(九)—@Accessors

在之前的几天,我们系统学习了Lombok的常见注解,并且将其官网stable中的所有注解都讲解了一编,接下来会通过两到三天的时间将Lombok目前正在试验的(experimental)注解简单过一遍,以下为experimental状态的所有注解。
在这里插入图片描述

@Accessors

@Accessors注解用于配置生成的getter和setter方法的访问级别和命名方式
接下来介绍的很多Lombok注解都不建议使用,因为Lombok后续增加的很多注解都与其设计初衷相违背,具体的使用建议我会在Lombok注解讲解的最后根据我的使用经验简单讲一下

1、如何使用

  • 注解在需要控制Getter、Setter方法访问级别和命名方式的地方(为@Getter、@Setter提供升级版功能)。
  • @Accessors可以使用以下属性进行配置:
    chain:boolean类型,默认为false。如果设置为true,则生成的setter方法返回this,以支持链式调用。
    fluent:boolean类型,默认为false。如果设置为true,则生成的getter和setter方法的方法名不带get和set前缀。
    prefix:String类型,默认为空字符串。设置生成的getter和setter方法的前缀。
    使用@Accessors可以在类级别和属性级别进行配置。在类级别配置时,会为该类中的所有属性生成相同的访问级别和命名方式。在属性级别配置时,可以为每个属性单独指定不同的配置。

2、代码示例

例:

@ToString
@Getter
@Setter
@Accessors(chain = true, fluent = true, prefix = "my")
public class AccessorsExample {private String myName;private int myAge;public static void main(String[] args) {AccessorsExample example = new AccessorsExample().name("John").age(30);System.out.printf("Age" + example.age());}
}

编译后:在上面的示例中,我们在类级别使用@Accessors注解配置了链式调用、去除前缀的属性。因此,我们可以通过链式调用的方式设置属性的值,并且生成的getter和setter方法的方法名不带get和set前缀。在Main方法中,我们创建了一个对象,并使用生成的setter方法设置属性的值。最后,打印该对象的age属性时,也没有指定是通过getter方法获取属性值。

public class AccessorsExample {private String myName;private int myAge;public AccessorsExample() {}public static void main(String[] args) {AccessorsExample example = (new AccessorsExample()).name("John").age(30);System.out.printf("Age" + example.age());}@Generatedpublic String toString() {return "AccessorsExample(myName=" + this.name() + ", myAge=" + this.age() + ")";}@Generatedpublic String name() {return this.myName;}@Generatedpublic int age() {return this.myAge;}@Generatedpublic AccessorsExample name(String myName) {this.myName = myName;return this;}@Generatedpublic AccessorsExample age(int myAge) {this.myAge = myAge;return this;}
}

运行结果:
在这里插入图片描述

相关文章:

  • 第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)
  • UNI-APP_iOS开发技巧之:跳转到TestFlight或者App Store
  • SQL第11课——使用子查询
  • 983. 最低票价
  • PHP读取文件内容的几种方法和函数
  • django使用笔记6--docker部署
  • 破局汽车智能化浪潮:Tire 1供应商的网络优化与升级策略
  • 在Linux中进行OpenSSH升级(编译安装在openssh目录)
  • C语言系列4——指针与数组(1)
  • 【数据库】 MongoDB 用户分配新的角色和权限
  • 从零开始Ubuntu24.04上Docker构建自动化部署(三)Docker安装Nginx
  • Cannon-es.js之HingeConstraint铰链约束案例
  • leetcode163.缺失的区间,模拟
  • 【算法】堆排之LCR 159.库存管理 Ⅲ(easy)
  • Python Web 与量子计算
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • Computed property XXX was assigned to but it has no setter
  • gulp 教程
  • JAVA 学习IO流
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • jQuery(一)
  • MySQL-事务管理(基础)
  • PHP那些事儿
  • XForms - 更强大的Form
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 悄悄地说一个bug
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 树莓派 - 使用须知
  • 我是如何设计 Upload 上传组件的
  • 智能网联汽车信息安全
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (3)nginx 配置(nginx.conf)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (计算机网络)物理层
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (转)Sublime Text3配置Lua运行环境
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core控制台应用程序初识
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • .NET构架之我见
  • .Net中间语言BeforeFieldInit
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .stream().map与.stream().flatMap的使用
  • [ C++ ] STL---string类的模拟实现
  • [240621] Anthropic 发布了 Claude 3.5 Sonnet AI 助手 | Socket.IO 拒绝服务漏洞
  • [AIGC] 如何建立和优化你的工作流?
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C#]DataTable常用操作总结【转】
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析