Android LomBok的使用

Lombok中@Data注解的作用和使用方法 1。 . 阅读详情
Lombok
  • Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为您的Java增光添彩。永远不要再写另一个getter或equals方法,带有一个注释的您的类有一个功能全面的生成器,自动化您的日志记录变量等等。通过使用对应的注解,可以在编译源码的时候生成对应的方法,减少模板代码的编写,极大提升开发效率。
GitHub地址:https://projectlombok.org
依赖
implementation 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
lombok插件
  • 安装lombok插件主要是为了使用lombok过程中代码的get,set等方法报红,不是代码错误。
  • 在Setting->Plugins中输入lombok——>添加插件Lombok——>点击安装。
常用注解
@Data 注解在类上;提供类所有属性的 getter 和 setter 方法,此外还提供了equals、hashCode、toString 方法
@Setter :注解在属性上;为属性提供 setter 方法
@Getter :注解在属性上;为属性提供 getter 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
@Cleanup : 可以关闭流
@Builder : 被注解的类加个构造者模式
@Synchronized : 加个同步锁
@SneakyThrows : 等同于try/catch 捕获异常
@NonNull : 如果给参数加个这个注解 参数为null会抛出空指针异常
@Value : 注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
@toString:注解在类上;为类提供toString方法(可以添加排除和依赖);
代码示例
@Builder
@Data
@AllArgsConstructor
@EqualsAndHashCode
@ToString(callSuper=true,exclude="username")
//@ToString(exclude = {"id","name"})   用exclude 决定排除哪些参数
//@ToString(callSuper = true)  决定调用父类同名方法
public class LoginBean {
    private String username;
    private String password;
    private String uuid;
    private String captcha;
}
LoginBean.builder()
        .username(loginUsername.getText().toString())
        .password(loginPassword.getText().toString())
        .uuid(code)
        .captcha(loginCode.getText().toString()).build(),
@Cleanup
InputStream in = new FileInputStream("2");
@Cleanup
OutputStream out = new FileOutputStream("2");
byte[] b = new byte[10000];        while(true)

{
    int r = in.read(b);
    if (r == -1) break;
    out.write(b, 0, r);
}
private void initModel(@NonNull String params) {  
      params.equals("1");  
 }
工作原理
  • 会发现在Lombok使用的过程中,只需要添加相应的注解,无需再为此写任何代码。自动生成的代码到底是如何产生的呢?
  • 核心之处就是对于注解的解析上。JDK5引入了注解的同时,也提供了两种解析方式。
运行时解析

运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样就可以通过反射拿到该注解。java.lang,reflect反射包中提供了一个接口AnnotatedElement,该接口定义了获取注解信息的几个方法,Class、Constructor、Field、Method、Package等都实现了该接口,对反射熟悉的朋友应该都会很熟悉这种解析方式。

编译时解析
  • 编译时解析有两种机制,分别简单描述下:

1.Annotation Processing Tool
apt自JDK5产生,JDK7已标记为过期,不推荐使用,JDK8中已彻底删除,自JDK6开始,可以使用Pluggable Annotation Processing API来替换它,apt被替换主要有2点原因:

  • api都在com.sun.mirror非标准包下
  • 没有集成到javac中,需要额外运行

2.Pluggable Annotation Processing API
JSR 269自JDK6加入,作为apt的替代方案,它解决了apt的两个问题,javac在执行的时候会调用实现了该API的程序,这样我们就可以对编译器做一些增强,这时javac执行的过程如下:
在这里插入图片描述
Lombok本质上就是一个实现了“JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:

  1. javac对源代码进行分析,生成了一棵抽象语法树(AST)
  2. 运行过程中调用实现了“JSR 269 API”的Lombok程序
  3. 此时Lombok就对第一步骤得到的AST进行处理,找到@Data注解所在类对应的语法树(AST),然后修改该语法树(AST),增加getter和setter方法定义的相应树节点
  4. javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块)
sf4j日志系统所需jar和properties 搭建sf4j日志系统所需jar包和properties 内容包括 slf4j-log4j12-1.7.9.jar slf4j-api-1.7.21.jar log4j-1.2.17.jar log4j.properties 立即下载

相关推荐

Hifiasm参数调优实战:当N50不理想时的7个排查方向与解决方案

本文详细解析了Hifiasm参数调优实战,针对基因组组装中N50不理想的7个排查方向与解决方案。通过调整--hom-cov、-D、-N等核心参数,结合HiFi数据和参考基因组分析,有效提升组装质量。文章以猪毛菜基因组为例,展示了从2.1MB到4.3MB的N50优化过程,为生物信息学研究者提供实用指南。

weixin_30642561的博客 425

@Data注解的作用

@Data注解的使用

m0_57079558的博客 5329

【实验】Linux下完全卸载oracle单实例(亲身体验完整版)

停止oracle数据库服务 停止监听 卸载数据库实例 因为自己懒得再弄dbca图形化界面啥的,直接采用dbca静默删除数据库实例,命令如下 dbca -silent -deleteDatabase -sourcedb orclhq -sid orcl -sysDBAUserName orcl -sysDBAPassword zte [oracle@slave ~]$ dbca -silent ...

萝卜吃鱼914的博客 1945

@Data注解

@Data注解的主要作用是提高代码的简洁,使用这个注解可以省去实体类中大量的get()、 set()、 toString()等方法。

xsq123的专栏 6万+

ARTIX-7 GTP 3G-SDI 工程构建与调试实战

本文详细介绍了基于ARTIX-7 FPGA和GTP收发器的3G-SDI工程构建与调试实战。从基础概念解析到Vivado工程创建、GTP IP核配置、SDI IP核集成,再到系统集成与时钟域处理,提供了全面的技术指导。文章还分享了调试技巧、常见问题排查方法以及性能验证步骤,帮助开发者快速掌握3G-SDI视频传输技术的实现与优化。

weixin_30443813的博客 256

告别社区5级:一个脚本搞定小米/红米BL解锁的账号绑定限制(附资源下载与避坑指南)

本文提供了一种绕过小米/红米设备Bootloader解锁社区等级限制的技术方案,适用于MIUI 12.5-14和HyperOS 1.0系统。通过自动化脚本临时修改系统组件,用户可快速完成账号绑定和设备解锁流程,附详细操作指南和常见问题解决方案。

weixin_27330481的博客 727

@data注解的作用

@Data注解作用

wang的博客 2664

基于非接触式微波雷达设计的跌倒检测预警系统【短信报警】

本项目选择基于非接触式微波雷达的跌倒检测预警装置作为技术核心,采用云帆瑞达的R60AFD1跌倒检测模组。这一模组能够根据人体的运动变化,如速度、距离和姿态等特征,判断是否发生跌倒,并可以持续监控老年人是否处于危险状态。此外,本项目还结合4G通信技术,通过Air724UG模块实现短信报警功能,一旦检测到跌倒事故,系统将自动通过4G网络向紧急联系人发送短信报警,及时通知亲属或医护人员进行救援。

1751

android使用lombok_Android 安卓使用 Lombok

最近偶然间接触到Lombok这款插件,他可以方便的通过注解来实现getter和setter.不用写一堆get set方法了 只需要一个@Data就可以实现 或者通过三个 @Getter @Setter @ToString 两者一样 @Data 包含他们怎么添加Lombok呢?1、gradle依赖implementation 'org.projectlombok:lombok:1.18.10' ...

weixin_39911998的博客 1068

YOLO26涨点改进 | 小目标损失函数独家改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

本文提出将AdaFocalLoss损失函数应用于YOLO26模型优化,有效提升小目标检测性能。AdaFocalLoss通过目标尺寸感知机制和IoU引导的动态调节,自动调整训练权重和聚焦程度,解决了样本不平衡问题。相比传统损失函数,它无需手动调参,能增强训练稳定性,在多尺度、复杂场景下表现优异。文章详细介绍了AdaFocalLoss的原理、优势及实现方法,并提供了代码集成指南。实验表明该方法能显著提升检测精度和鲁棒性,特别适用于小目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 335

ZYNQ PS裸机开发RS485

RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。RS-485是美国电子工业协会(EIA)在1983年批准了一个新的平衡传输标准(balanced transmission standard),EIA一开始将RS(Recommended Standard)做为标准的前缀,不过后来为了便于识别标准的来源,已将RS改为EIA/TIA。

baidu_34971492的博客 829

Android上使用Lombok

Android上使用LombokAndroid上使用Lombok 简介 注解简介 Android 集成 注解说明 val NonNull Cleanup GetterSetter ToString EqualsAndHashCode NoArgsConstructor RequiredArgsConstructor and AllArgsConstructor Builder SneakyThrow

流水不腐小夏 6780

【路径规划】基于matlab蚁群算法机器人栅格地图最短路径规划【含Matlab源码 4590期】

基于matlab蚁群算法机器人栅格地图最短路径规划 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1276

android使用lombok_Android Studio3.x上使用Lombok

1、添加gradle依赖implementation ‘org.projectlombok:lombok:1.16.8‘ //添加lombok依赖implementation ‘org.glassfish:javax.annotation:10.0-b28‘ //java注解2、在需要使用lombok的模块的配置,默认(build.gradle(Module:app))中添加如下配置开启anno...

weixin_39559469的博客 295

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android使用lombok_Android 使用Lombok插件的入门基本姿势,为简化而生

1.Lombok简介Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your c...

weixin_36073392的博客 1035

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android studio 使用Lombok的一些问题记录

文章不写了,因为懒。直接放我的印象笔记链接。 https://static.app.yinxiang.com/embedded-web/profile/#/join?guid=b486520f-24d4-4325-8371-83f01ce123b7&channel=copylink&shardId=s53&ownerId=22402034 文章结束,祝大家写BUG愉快!!! ...

weixin_40750371的博客 1498

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

安卓开发环境使用 Lombok

安卓开发环境使用 Lombok一、简介二、操作过程1. 准备好一个安卓项目2. 增加 lombok.config3. 安卓 lombok 插件三、报错处理 一、简介 Lombok是一款在Java开发中常用的注解工具,可以用来简化实体类的定义。但在安卓的开发环境中,并不像普通Java项目中使用这么简便,需要多一点操作。 二、操作过程 1. 准备好一个安卓项目 2. 增加 lombok.config 在安卓项目的根目录下放一个 lombok.config, 内容: lombok.anyConstructor.s

猿来这样-谢厂节的博客 1870

android使用lombok_用Lombok访问器绑定Android吗?

I'm starting to play with Android binding. The standard (1-way) binding is to the point of being good enough for the people I hang out with.However, I find that I can't use Lombok accessors without a...

weixin_42300424的博客 129

Android Retrolambda Lombok 项目使用教程

Android Retrolambda Lombok 项目使用教程 1. 项目介绍 android-retrolambda-lombok 是一个开源项目,旨在通过修改 Lombok AST(抽象语法树),使得 Android 项目能够在 Java 8 源码上运行 Lint 检查而不会报错。该项目结合了 Retrolambda 和 Lombok,允许开发者在使用 Java 8 特性(如 Lambda...

gitblog_01081的博客 499

Android中使用Lombok

Android中使用Lombok

qq_37892558的博客 1392

android使用lombok_Android lombok学习,分享写demo过程中的处理

下面说一下我写demo过程中的处理过程(可能与网络其他的有些不同)1.as中安装插件在android studio下,进入setting->plugins ,右侧搜索lombok,然后点击安装,重启android studio2.添加依赖项compileonly "org.projectlombok:lombok:1.16.20"annotationprocessor "org.projec...

weixin_35675101的博客 337

android使用lombok_Android应用开发之Android lombok学习,分享写demo过程中的处理

本文将带你了解Android应用开发之Android lombok学习,分享写demo过程中的处理,希望本文对大家学Android有所帮助。下面说一下我写demo过程中的处理过程(可能与网络其他的有些不同)1.AS中安装插件在Android Studio下,进入setting->Plugins ,右侧搜索Lombok,然后点击安装,重启Android Studio2.添加依赖项compile...

weixin_32173041的博客 157

android使用lombok_使用Eclipse和Android的ProjectLombok

我试图使用Lombok与Android,但是每当我尝试运行我得到这些错误[2012-02-10 10:53:49 - xxx] The library 'lombok2.jar' contains native libraries that will not run on the device.[2012-02-10 10:53:49 - xxx] The following libraries ...

weixin_33549415的博客 158

Android Studio / IntelliJ IDEA 中使用lombok

原文连接 https://github.com/shellhub/blog/issues/30 前言 lombok可以通过一个注解自动实现Getter Setter等方法.平时我们可以通过Eclipse或者IntelliJ IDEA快捷键生成Getter Setter方法,当我们需要加入一个新的属性或者修改某属性的变量名或者数据类型时,都需要手动修改Getter Setter方法,这样极为麻烦...

shellhub的博客 478

Android使用GsomFormatPlus+Lombok简化定义实体类

  因为最近在重构简易音乐项目的java版本,所以难免碰到定义许多实体类,且字段不少的情况,总不能手写吧,所以用插件生成是最简便的,但是每个字段都对应set、get方法以至于一个实体类代码行数达到了600+,如下图:   这肯定不行啊,于是就用到了Lombok插件,当然了也要在moudle的build里面添加引用,最后同样的实体类使用后代码行数锐减如下:  首先我们要去Android studio的settings/plugins:   装好之后,我们点击apply and ok,此时我们需要一个自己准

Tobey_r1的博客 1554

android使用lombok,用Lombok访问器绑定Android吗?

I'm starting to play with Android binding. The standard (1-way) binding is to the point of being good enough for the people I hang out with.However, I find that I can't use Lombok accessors without a...

weixin_35502466的博客 99
上一篇: Android ButterKnife(黄油刀)的使用
下一篇: 实用的工具类框架——AndroidUtilCode
八归少年
八归少年 新星创作者: 操作系统技术领域 新星创作者: 操作系统技术领域
博客等级 码龄9年 9011粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八归少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值