Lombok 注解总结

一、前言

Lombok 是一个 Java 库,用于通过注解方式自动化生成 Java 类的常用方法(如 getter、setter、toString 等),从而简化开发流程并减少重复性代码。以下是 Lombok 库中常用的注解及其作用。

二、常用注解

2.1、@Data

结合了@Getter、@Setter、@EqualsAndHashCode和@ToString的功能。

使用@Data注解后,Lombok会自动为类生成getter、setter、equals、hashCode和toString等方法。

import lombok.Data;

@Data
public class Person {
    private String name;
    private int age;
}

2.2、@Builder

自动生成构建对象的 builder 模式。Builder 模式可以简化对象的创建,特别是当类的构造参数较多时。

import lombok.Builder;

@Builder
public class User {
    private String name;
    private int age;
    private String email;
}

在上述示例中,我们使用了 @Builder 注解来标记 User 类,Lombok 会为 User 类生成一个内部静态类 UserBuilder,用于构建 User 对象。

使用 @Builder 生成的构建器可以按照以下方式来使用:

User user = User.builder()
                .name("John")
                .age(25)
                .email("john@example.com")
                .build();

2.3、@Slf4j

自动生成日志记录变量,通常与具体的日志库(如 Logback、Log4j2)配合使用。

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class UserService {
    public void logMessage() {
        log.info("This is a log message.");
    }
}

在上述示例中,我们使用了 @Slf4j 注解来标记 UserService 类。Lombok 会自动生成一个名为 log 的日志记录变量,你可以在类中使用这个变量来进行日志记录。在这里,我们使用了 log.info(“This is a log message.”) 来记录一条信息日志。

需要注意的是,使用 @Slf4j 注解前,你需要确保项目中已经配置了相应的日志框架,如 Logback、Log4j2 等。Lombok 会自动与这些日志框架集成,使得生成的日志记录变量能够正确地执行日志输出。

2.4、@Value

生成不可变类,类似于 @Data,但不会生成 setter 方法。不可变类指的是一旦创建对象,就不能再修改它的字段值。使用 @Value 注解可以避免意外的修改对象的状态,从而增加代码的健壮性和可维护性。

import lombok.Value;

@Value
public class User {
    private String name;
    private int age;
}

请注意,由于 @Value 注解生成的类是不可变的,所以它不会生成 setter 方法。如果需要在对象创建后对字段进行修改,就不适合使用 @Value 注解。但对于不需要修改的数据对象,使用 @Value 可以保证对象状态的一致性,从而减少错误和代码维护难度。

2.5、@RequiredArgsConstructor

自动生成必需参数的构造方法,通常用于 final 属性。

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class User {
    private final String name;
    private int age;
    private final String email;
}

在上述示例中,三个字段:name、age 和 email。通过在类上使用 @RequiredArgsConstructor 注解,Lombok 会自动生成一个构造方法,该构造方法只包含 name 和 email 这两个被标记为 final 的字段作为参数,age 字段不会包含在构造方法中。

2.6、@NoArgsConstructor

生成无参构造函数。

import lombok.NoArgsConstructor;

@NoArgsConstructor
public class Person {
    private String name;
    private int age;
}

2.7、@AllArgsConstructor

自动生成包含所有非静态字段的构造函数(全参构造方法)。

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class Person {
    private String name;
    private int age;
}

使用@AllArgsConstructor注解后,Lombok会为所有非静态字段生成构造函数。

2.8、@EqualsAndHashCode

自动生成equals()和hashCode()方法,用于对象的比较和哈希计算。

import lombok.EqualsAndHashCode;

@EqualsAndHashCode
public class Person {
    private String name;
    private int age;
}

使用@EqualsAndHashCode注解后,Lombok会自动生成equals()和hashCode()方法。

2.9、@ToString

自动生成toString()方法,方便对象的打印输出。

import lombok.ToString;

@ToString
public class Person {
    private String name;
    private int age;
}

使用@ToString注解后,Lombok会自动生成toString()方法,以便打印对象的字段值。

2.10、@Getter和@Setter

为类的字段自动生成getter和setter方法。

import lombok.Getter;
import lombok.Setter;

public class Person {
    @Getter @Setter
    private String name;
    @Getter @Setter
    private int age;
}

使用@Getter和@Setter注解后,Lombok会自动生成getName()和setName()方法以及getAge()和setAge()方法。

三、总结

这些注解可以根据需求单独使用,也可以组合在一起使用,以简化 Java 类的开发过程,减少冗余代码,并提高代码的可读性和维护性。请注意,使用 Lombok 需要在项目中添加 Lombok 的依赖,以便编译器能够正确处理这些注解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/575401.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot,vue停车管理系统

目录 项目介绍: 图片展示 运行环境 获取方式 项目介绍: 权限划分:用户和管理员 用户: 具有登录,注册,退出登录的功能 首页:展示一个欢饮页面 个人中心:展示关于个人的信息,以及停车信息…

Unreal Engine创建Plugin

打开UE工程,点击编辑,选择插件 点击“新插件”按钮,选择“空白选项”填入插件名字"MultiPlayerPlugin",填入插件作者、描述,点击“创建插件”按钮打开C工程,即可看到插件目录,编译C工…

ai论文生成神器——快速完成论文任务!

在这个AI写作的时代,大家都在使用AI写作作为论文辅写工具。用过ChatGPT写论文的小伙伴应该都知道,ChatGPT是通过对话或提问形式获取的AI生成内容,提供不了专业的论文写作标准,例如自动生成封面、目录、摘要、参考文献等部分。而专…

面试集中营—ElasticSearch架构篇

一、为什么用ElasticSearch? 1、支持多种数据类型。它可以处理非结构化、数值和地理信息等多种类型的数据; 2、简单的RESTful API。ES提供了一个简单易用的RESTful API,使得它可以从任何编程语言中调用,降低了学习的曲线。 3、近实…

德语口语学习的8种练习方法

简洁明了一点,方便大家理解,我总结了以下8点: 1.模拟对话: 创造实际生活场景,例如购物、问路、餐厅点餐等,并自言自语或者与伙伴一起模拟这些对话。 参加角色扮演活动,通过不同情境练习口语。…

Camtasia2024破解版激活许可证秘钥永久免费使用

Camtasia Studio是一款专业的屏幕录像和视频编辑软件套装,它提供了从屏幕录制到视频编辑、菜单制作、视频播放等一系列功能。以下是对Camtasia Studio及其2024年最新版本的详细介绍。 一、Camtasia Studio概述 Camtasia Studio是一款集屏幕录制、视频剪辑、菜单制…

java:SpringBoot入门

Spring 提供若干子项目,每个项目用于完成特定功能 Spring Boot 可以简化配置并且快速开发 SpringBootWeb快速入门 创建Springboot模块并使用Springweb依赖 在类上添加注解 RestController可以将字符串自动转成json返回数据给页面 再在方法上添加注解 RequestMapping(&…

深入理解GTK、Qt、AWTK:跨平台GUI框架对比

目录标题 GTK特性:优点:缺点: Qt特性:优点:缺点: AWTK特性:优点:缺点: 适用场景 在当今的软件开发领域,图形用户界面(GUI)的开发是不可…

Log4j日志框架多种日志级别

Log4j日志框架定义了多种日志级别,这些级别按照优先级从高到低排列如下: OFF:这是最高等级的日志级别,用于关闭所有日志记录。FATAL:指出每个严重的错误事件将会导致应用程序的退出。ERROR:表明发生错误事…

python之excel加工处理小案例一则

一、工具用途 工作中,需要对各类excel进行加工处理,当表和字段比较多时,关联条件又有多个,每次通过execl的vlookup之类的关联公式手工可以解决工作需求,但一般耗时较长,且人工统计匹配也存在出错的情况。 …

官方售价299元的自媒体博客资讯类wordpress主题

官方售价299元的自媒体博客资讯类wordpress主题。 自媒体一号是一款由主题巴巴团队原创设计开发的WordPress主题,这款主题页面布局简约大气,设计细节精美考究,内置功能非常强大,通过后台的主题设置面板,你可以轻松自定…

kaggle不显示中文字体

链接:【kaggle】在matplotlib中使用中文字体_kaggle使用中文字体打印图片-CSDN博客 下载字体链接 完整代码: import matplotlib.pyplot as plt import matplotlib.font_manager as font_managerdef plot_df(df, x, y, title"", xlabelDate,…

【Qt常用控件】—— 多元素控件

目录 1.1 List Widget 1.2 Table Widget 1.3 Tree Widget 1.4 小结 Qt 中提供的多元素控件有: QListWidget QListView QTableWidget QTableView QTreeWidget QTreeView xxWidget 和 xxView 之间的区别 以 QTableWidget 和 QTableView 为例: QTableView 是基于…

快速构建Spring boot项目

1、Idea里新建项目 2、创建HelloController 3、运行 4、开发环境热部署 pom.xml 查看目前已有的依赖 配置properties 设置 ctrlshiftalt/ 新版本的compiler.automake.allow.when.app.running已经不在registry里面了,在settings里面的Advanced settings里面Allow au…

【R语言简介】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【LLVM】在Windows中配置LLVM开发环境

本文内容 0.动机1. 安装Visual Studio 20192 安装Python3已安装Python未安装Python 3. 配置Visual Studio4.安装LLVM获取源码将LLVM切换到我们的目标版本编译LLVM 0.动机 想着ubuntu用着别手,看看能不能在Windows中进行开发。于是就动手实践了下 Getting Started w…

Android Studio实现内容丰富的安卓养老平台

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 158安卓养老 1.开发环境 后端用springboot框架,安卓的用android studio开发android stuido3.6 jak1.8 idea mysql tomcat 2.功能介绍 安卓端: 1.注册登…

Mockaroo - 在线生成测试用例利器

简介:Mockaroo 是一个无需安装的在线工具,用于生成大量的自定义测试数据。它支持多种数据格式,如JSON、CSV、SQL和Excel,并能模拟复杂的数据结构。 历史攻略: 测试用例:多条件下编写,懒人妙用…

How to solve matplotlib Chinese garbled characters in Ubuntu 22.04

conda create -n huizhou python3.8conda activate huizhouconda install numpy matplotlibpip install mplfontsmplfonts init# 导入必要的库 import numpy as np import matplotlib.pyplot as plt# 创建角度数组,从0到2π x np.linspace(0, 2 * np.pi, 100)# 计算…

微信小程序-------模板与配置

能够使用 WXML 模板语法渲染页面结构能够使用 WXSS 样式美化页面结构能够使用 app.json 对小程序进行全局性配置能够使用 page.json 对小程序页面进行个性化配置能够知道如何发起网络数据请求 一.WXML 模板语法 数据绑定 1. 数据绑定的基本原则 ① 在 data 中定义数据 ② 在…
最新文章