lombok

这篇具有很好参考价值的文章主要介绍了lombok。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

lombok

lombok是一个简化java代码编写的工具类,可以简化javabean的编写,可以通过注解的方式消除代码中的构造方法,getter/setter等代码,简化类的编写。

Lombok原理分析

Lombok核心在于对注解的解析上。JDK5引入了注解的同时,也提供了两种解析方式。

运行时解析

编译时解析

常见注解

@Data

生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

@NonNull

用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常

public String getName(@NonNull Person p){

    return p.getName();

}

相当于:

public String getName(@NonNull Person p){

    if(p==null){

        throw new NullPointerException("person");

    }

    return p.getName();

}

@Getter/@Setter

用在成员变量前面,相当于为成员变量生成对应的get和set方法,同时还可以为生成的方法指定访问修饰符,当然,默认为public

@Log

用于生成log常量。具体注解根据日志工具的不同而不同,同时,可以在注解中使用topic来指定生成log对象时的类名。

不同的日志注解如下:

@CommonsLog

private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);

@JBossLog

private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);

@Log

private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());

@Log4j

private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

@Log4j2

private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

@Slf4j

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

@XSlf4j

private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

@Cleanup

用在变量前面,可以保证此变量代表的资源会被自动关闭,默认是调用资源的close()方法,如果该资源有其它关闭方法

@NoArgsConstructor /@AllArgsConstructor

为该类产生无参的构造方法和包含所有参数的构造方法

@RequiredArgsConstructor

使用类中所有带有@NonNull注解的或者带有final修饰的成员变量生成对应的构造方法

@EqualsAndHashCode(callSuper = false)

用于在类的编译时自动生成equals()和hashCode()方法。这样可以节省手动编写这些方法的时间,并且可以确保生成的代码符合Java的约定。使用此注解可以使类更易于在哈希表中使用,并更容易在集合中比较。

callSuper默认为false,即默认不适用父类中属性判断

@ToString

添加toString方法。

默认情况下,会输出类名、所有属性(会按照属性定义顺序),用逗号来分割,通过callSuper参数来指定是否引用父类,includeFieldNames参数设为true,就能明确的输出toString()属性。

@Bulider

使用建造者模式创建对象。文章来源地址https://www.toymoban.com/news/detail-622239.html

到了这里,关于lombok的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】Java基础

    下载JDK,可以在官网Java Downloads | Oracle 中国下载,但是这里需要注册才能够下载。在Index of java-local/jdk (huaweicloud.com)也可以下载到,但是版本比较老,关系不大,直接下载,对应jdk-8u202-windows-x64.exe,这个是JDK8版本,它是一个长期维护版本。 下载后安装: 注意这里的JRE,它是

    2024年02月11日
    浏览(41)
  • Java——Java面向对象

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。 Java是面向对象的程序设计语言,Java语言提供了定义类、成员变量、方法等最基本的功能。

    2024年02月02日
    浏览(41)
  • Java实现的五子棋游戏 ~java.awt&java.swing

    作业要求: (1)课题代号: 2 (2)课题名称: 2D 游戏设计 (3)课题要求:设计一种二维游戏(如数独,扫雷,飞机大战,贪食蛇,五子棋等),完成界面设计和必要的游戏功能 以下主要实现的功能有: 一、下棋功能,在棋盘的交点处落子。 二、简单人机对战功能。 1.实现

    2024年02月09日
    浏览(38)
  • 多个 JDK 版本(Java 8、Java 17、Java 21)下载和切换

    随着 Spring Boot 的版本不断迭代更新,新发布的 Spring Boot 版本已经不再支持 JDK 8, 对 JDK 版本的最低要求为 17 。 所以,为了在实际中可以任意选择所需的 JDK 版本,将 多个 JDK 版本切换的方法 总结如下: JDK 不同版本可以在 Oracle 官网下载, 下载地址 :点此进入 选择所需的

    2024年02月03日
    浏览(53)
  • 安装Java8和Java17共存,如何自由切换Java版本?

    官方下载地址:https://www.oracle.com/java/technologies/downloads/ 根据需要选择要下载的Java版本 安装过程省略,有需要的可自行百度 … 找到自己java安装的目录 进入Java jdk的bin目录,如:C:java8jdk1.8.0_331bin,将java.exe改为java8.exe 同样的方式去修改java17的java文件名称 将Java8和Java17的b

    2024年02月09日
    浏览(56)
  • 初识Java--Java数据类型

    java数据类型主要分为 基本数据类型 和 引用数据类型 基本数据类型有四种①整型②浮点型③字符型④布尔型 字符串类型属于引用型数据类型 数据类型 所占字节 范围 字节型 byte 1字节 -128~127 短整型 short 2字节 -32768~32767 整型 int 4字节 -2 31 ~2 31 -1 长整型 long 8字节 -2 6

    2024年02月08日
    浏览(38)
  • Java集合-Java集合基础

    目录 讲一讲Java集合吧 集合的使用 为什么要使用集合? 如何选用集合? Collection Collection与Collections的区别是什么? Collections.sort和Arrays.sort的实现原理 为何Collection不从Cloneable和Serializable接口继承? 线程安全集合类 哪些集合类是线程安全的?哪些不安全? 怎么确保一个集合不

    2024年02月03日
    浏览(36)
  • 【Java】Java中的多态

    在Java中,多态是面向对象编程中的一个重要概念,它 允许不同类型的对象对同一方法进行不同的实现 。具体来说, 多态性指的是通过父类的引用变量来引用子类的对象,从而实现对不同对象的统一操作 。 例如:狗和猫都是动物,动物共同的行为都有吃这个动作,而狗可以

    2024年02月10日
    浏览(40)
  • 【高级Java】高级Java实验

    1、(4分)请通过反射技术,为附件中的Person.class生成相应的.java代码,java代码中的方法的方法体为空,即方法内部代码不用生成。请注意生成的java代码的格式。 2、(3分)请为第1题中Person类创建代理类 PersonProxy,PersonProxy的在代理Person类的所有setter方法时,把方法的调用时

    2024年02月03日
    浏览(33)
  • Java入门-java的方法

    java的方法是用来完成某种功能的代码块。使用方法封装代码块,可以提高代码的可复用性,模块化,使用者无需知道代码的具体实现也能通过方法调用使用其提供的功能,简化了应用过程。 一般一个方法的构成有如图几部分构成: 方法的基本构成如下面的例子: 程序案例:

    2024年04月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包