Lombok简化java开发 - Getter/Setter注解,让你不用再多getter/setter写方法

这个内容在之前的帖子中已经有人讨论过,今天再做一更进一步的了解.

 

本篇会涉及如下三个注解:

 

  • @Getter/@Setter: 帮助我们对应的 getter/setter方法
    • (Come on, 这个没什么意思, Hibernate Tools会生成, Eclipse 佷智能的好不拉! 是的, 从这个角度出发的确没太大吸引力, 各位看管姑且看之,  @Data会更有用, 总是会有需要手写pojo的情况)
  • @NonNull: 在setter方法中做非null判断,遇到null参数,会抛出NullPointerException

 

如果你还不知道Lombok是什么, 先看看这篇:

Lombok简化Java代码 - code less do more

 

关于这部分主题,官方文档在这里(E文强力的朋友也看这里)

http://projectlombok.org/features/GetterSetter.html

 

代码演示:

 

package lv.sample.lombok;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
import lombok.ToString;

@ToString
public class GetterSetterUser {
	
	@Getter @Setter private int age = 25;
	
	@Setter(AccessLevel.PROTECTED) private String address = "shanghai";
	
	/*
	 * add a notnull constraint.
	 */
	@Getter @Setter @NonNull
	private String email = null;
	
	/**
	 * if the setName method has been declared,
	 * the Lombok does not generate it.
	 */
	@Setter @Getter
	private Object name = null;
	
	/**
	 * code by myself
	 * @param name
	 */
	public void setName(String name) {
		this.name = name + " from my code";
	}
	
	public static void main(String[] args) {
		// we test the getter/setter annotation
		GetterSetterUser bean = new GetterSetterUser();
		bean.setAge(20);
		bean.setAddress("xi'an");
		bean.setName("wity_lv,");
		
		/* 
		 * the toString() method has been instead of the Lombok @ToString
		 * annotation
		 */
		System.out.println(bean.toString());
		
		/*
		 * set a null value to email
		 */
		try {
			bean.setEmail(null);
		} catch(NullPointerException e) {
			System.out.println("phone could not be null value");
		}
		
	}
}

 

console out 写道
GetterSetterUser(age=20, address=xi'an, email=null, name=wity_lv, from my code)
email could not be null value

 

使用 delombok工具反向生成代码, 看看使用注解能省多少代码:

注意: lombok的注解是可以直接用的, delombok工具只是用来查看生成的代码, 不需要将delombok生成的代码复制回工程

 

delombok 写道
java -jar -cp lib/log4j-1.2.8.jar lib/lombok.jar delombok src -d ./src-delomboked

 

 

// Generated by delombok at Fri Aug 26 10:57:14 CST 2011
package lv.sample.lombok;

import lombok.NonNull;

public class GetterSetterUser {
	
	private int age = 25;
	private String address = "shanghai";
	/*
	 * add a notnull constraint.
	 */
	@NonNull
	private String email = null;
	/**
	 * if the setName method has been declared,
	 * the Lombok does not generate it.
	 */
	private Object name = null;
	/**
	 * code by myself
	 * @param name
	 */
	public void setName(String name) {
		this.name = name + " from my code";
	}
	
	public static void main(String[] args) {
		// we test the getter/setter annotation
		GetterSetterUser bean = new GetterSetterUser();
		bean.setAge(20);
		bean.setAddress("xi\'an");
		bean.setName("wity_lv,");
		/* 
		 * the toString() method has been instead of the Lombok @ToString
		 * annotation
		 */
		System.out.println(bean.toString());
		/*
		 * set a null value to email
		 */
		try {
			bean.setEmail(null);
		} catch (NullPointerException e) {
			System.out.println("phone could not be null value");
		}
	}
	
	@java.lang.Override
	@java.lang.SuppressWarnings("all")
	public java.lang.String toString() {
		return "GetterSetterUser(age=" + this.getAge() + ", address=" + this.address + ", email=" + this.getEmail() + ", name=" + this.getName() + ")";
	}
	
	@java.lang.SuppressWarnings("all")
	public int getAge() {
		return this.age;
	}
	
	@java.lang.SuppressWarnings("all")
	public void setAge(final int age) {
		this.age = age;
	}
	
	@java.lang.SuppressWarnings("all")
	protected void setAddress(final String address) {
		this.address = address;
	}
	
	@NonNull
	@java.lang.SuppressWarnings("all")
	public String getEmail() {
		return this.email;
	}
	
	@java.lang.SuppressWarnings("all")
	public void setEmail(@NonNull final String email) {
		if (email == null) throw new java.lang.NullPointerException("email");
		this.email = email;
	}
	
	@java.lang.SuppressWarnings("all")
	public Object getName() {
		return this.name;
	}
}
 

 

话说,为每个字段写@Getter @Setter有些麻烦, 这里有个@Data会省不少事:

 

 

@Data
@NoArgsConstructor
@AllArgsConstructor
@Log4j
public class LombokUser {
	
	private String id = null;
	private String name = null;
	
	@NonNull
	private String email = null;
	
	public static void main(String[] args) {
		log.info("test the lombok bean");
		
		LombokUser u = new LombokUser("001", "wity_lv", "wity_lv@sample.com");
		log.info(u.toString());
		
		LombokUser u2 = new LombokUser("001", "wity_lv", "wity_lv@sample.com");
		log.info(u.equals(u2));
		
		try {
			u.setEmail(null);
		} catch(NullPointerException ex) {
			log.info("email could not be null: " + ex.getMessage());
		}
	}
}

 

 

console out 写道
2011-08-26 11:10:40 test the lombok bean
2011-08-26 11:10:40 LombokUser(id=001, name=wity_lv, email=wity_lv@sample.com)
2011-08-26 11:10:40 true
2011-08-26 11:10:40 email could not be null: email
springboot依赖lombok插件、lombok常用注解 springboot依赖lombok插件、lombok常用注解讲解 阅读详情

相关推荐

当预编译包失效时:手把手教你在Nvidia Orin (JetPack 5.1.1) 上源码编译onnxruntime-gpu

本文详细指导在Nvidia Orin (JetPack 5.1.1) 上源码编译onnxruntime-gpu的全流程,解决预编译包兼容性问题。涵盖环境准备、工具链配置、源码编译、常见问题解决及性能优化技巧,帮助开发者在边缘计算设备上实现高效AI模型推理。

weixin_29062823的博客 134

Spring中Setter注入详解

Spring中setter注入详解

x2656271356的博客 3857

kaggle社区LLM Classification Finetuning

预测用户在一个由大型语言模型(LLMs)驱动的聊天机器人之间的正面交锋中会偏好哪些回应。获得来自聊天机器人竞技场(Chatbot Arena)的对话数据集,其中不同的LLMs对用户的提示生成答案。通过开发一个胜出的机器学习模型,帮助改进聊天机器人与人类的互动方式,并确保它们更好地符合人类的偏好。实际上是进行一个序列的分类。

m0_73542617的博客 1908

Lombok注解之@Setter

为属性添加set方法。注意:static、final修饰的字段不提供setter方法,因为static修饰的属性需要类名调用,而final修饰的属性不可修改。

老猫喜欢今日爬山的博客 1879

Springboot——接入企业微信聊天机器人

最近企业微信的聊天机器人很火也很好玩,本期想自己接入一个玩玩试试水,同时也接入AI大模型进行数据的交互。

专注写bug 1320

LPDDR6与LPDDR5 channel/rank/die/bank技术探讨

LPDDR6与LPDDR5 channel/rank/die/bank技术探讨

zilan23的博客 3641

Lombok之@Getter/@Setter使用

一. 为什么要用@Getter/@Setter? 二. @Getter/@Setter如何使用? 三. @Getter/@Setter源码 四. 特别说明 本文已经收录在[Lombok注解系列文章总览]中,并继承总览中所提的特别说明。(https://blog.youkuaiyun.com/cauchy6317/article/details/102498569) ...

cauchy6317的博客 2万+

SimpleITK使用——1. 进行Resample/Resize操作

文章目录1. 变换到一个新的spacing1.1 使用Resample()的方法1.1.1 完整代码1.1.2 转换前后图像1.2 使用ResampleImageFilter()的方法2. 已知原图和变换后目标图像的大小2.1 代码2.2 转换后图像3. 相关内容说明3.0 体素和spacing3.1 Resample() 函数说明3.2 itk::simple::ResampleImageFilter函数说明 1. 变换到一个新的spacing 1.1 使用Resample()的方法 1.1.1

啷个哩个啷 8079

java开发常用注解详解

java开发常用注解详解,只需这些就够了

编程是一门实践技术 1642

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2170

LDO参数解读、特性、参考设计

目录 一、工作原理 二、基本参数解释 三、LDO的一些特性 1、输出自放电 2、软启动 3、LDO效率 4、动态负载调整(∆VOUT) 5、线性瞬态响应 6、压差(Dropout Voltage) 四、参考设计 1、输入输出电容选择 2、Layout参考 一、工作原理 LDO是Low Dropout Regulator的缩写,意思是低压差线性稳压器,下面是LDO的内部框图,大致的工作原理就是:参考电压Vref和反馈电压FB(VOUT通过两个电阻分压)分别接在误差放大器的反向和正向

记得诚 1万+

spring依赖注入:使用注解的方式实现Setter方法注入代码示例(@Component、@Autowired和@Configuration)

这样,我们就完成了使用全部注解方式实现Setter方法注入的Spring代码示例。使用注解方式可以简化配置,并提高代码的可读性和易维护性。在实际应用中,可以根据项目需求和开发团队的偏好选择适合的注解方式。最后,我们可以通过创建一个Spring应用程序上下文,并获取相应的Bean来验证依赖注入是否成功。注解创建一个配置类,并在该类中声明Bean的配置。使用全部注解的方式实现Setter方法注入,可以使用。在上述示例中,我们使用。在上述示例中,我们使用。在上述示例中,我们在。在上述示例中,我们在。

学亮编程手记 640

元宇宙通证- 九、IT/ICT发展史全景长图

九、IT/ICT发展史全景长图 (一)综述 IT是Information Technology的缩写,意为”信息技术“,包含现代计算机、网络、通信等信息领域技术。自1844年人类历史上发出来第一份电报,实现了信息的长图传输,信息技术发展的历史大幕随之拉开。信息技术的普遍应用,是进入信息社会的标志。 IT技术最早发源于半导体,然后发展处计算机、通信网和互联网,进而演进到现在的AI、XR、计算机、大数据、物联网、工业互联网、区块链、量子计算等。 有人说元宇宙是下一代互联网,有人说元宇宙是互联网的终极形态。 我们

沧海之巅的专栏 1万+

Java开发神器Lombok使用详解

最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter、构造器方法、字符串输出的ToString方法和Equals/HashCode方法等。甚是浪费时间,也影响代码的可读性。因此,今天就给大家推荐一款Java开发神器——Lombok,让代码更简单易读。 什么是Lombok Lombok是一款Java开发插件,可以通过它定义的注解来精简冗长和繁琐的代码,主...

程序新视界 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Lombok 使用详解,简化Java编程

前言 在 Java 应用程序中存在许多重复相似的、生成之后几乎不对其做更改的代码,但是我们还不得不花费很多精力编写它们来满足 Java 的编译需求 比如,在 Java 应用程序开发中,我们几乎要为所有 Bean 的成员变量添加 get() ,set() 等方法,这些相对固定但又不得不编写的代码浪费程序员很多精力,同时让类内容看着更杂乱,我们希望将有限的精力关注在更重要的地方。 Lombok 已经诞...

日拱一兵 7325

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Lombok】@Getter 和 @Setter | 如何优雅的进行对象的getter和setter操作

文章目录一、简介二、示例比较1. Lombok 写法2. Java 标准写法三、支持的配置项四、附属说明参考文献 一、简介 你可以用@Getter和@Setter来注解任何字段,让lombok自动生成默认的getter/setter。 如果字段名为foo,一个默认的getter则被命名为getFoo(如果字段的类型是布尔型,则被称为isFoo)。一个默认的setter被命名为setFoo,返回void,并且需要一个与字段类型相同的参数。它只是将字段设置为这个值。 生成的getter/setter方法访问级别

猫巳的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Idea使用lombok插件减少getter、setter等方法的编写

lombok插件简介   在做JavaWeb开发的时候,需要将数据库中的表对应成对象编写实体类对象,实体类对象由字段属性名,Setter、Getter方法组成,其撰写很有规律,代码看起来特别冗余却不得不写。此时伟大的lombok插件随之而来。   lombok的产生就是为了省去我们手动创建getter和setter方法的麻烦,它能够在我们编译源码的时候自动帮我们生成getter和setter方法。...

weixin_43881282的博客 7981

Idea插件之——Lombok生成getter/setter等方法简化代码

  Lombok实际上在我们项目的代码里早就统一使用了,用起来很方便,这几天在总结博客的Idea插件系列,今天总结一下Lombok。 一、Lombok是什么   Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对..

weixin_42490070的博客 1246

Lombok @Builder 注解的进阶玩法:自定义 Getter/Setter 方法全攻略

你想在设置年龄时检查是否合法(比如不能为负数)你想在获取邮箱时自动转为小写你想对某些字段进行加密/解密处理这时候,默认的 getter/setter 就不够用了,我们需要自己动手!🛠️@Builder// 自定义 getter= null?// 自定义 setterthrow new IllegalArgumentException("年龄不能为负数!");但是!这样直接添加 getter/setter 会导致@Builder生成的 builder 类忽略你的自定义方法。😱。

龚小帅的博客 1754

4. Getter和Setter注解与lombok

官方介绍最开始我们是不是手写get和set方法,但是由于太麻烦了,所以换成了(alt+insert -> Getter and Setter -> 全选 -> 回车)让idea给我们生成。但是如果当前类里有20多个甚至100个私有成员变量,难道也要一个一个点吗(当然全选的时候也可以用Ctrl+A)?这不是太麻烦了么。现在我们有一个很简便的方法,只需要在类前面写一个@Getter和@Setter注解,它就会帮我们自动生成当前类里所有私有成员变量的get和set方法了,就不需要我们自己写了。

m0_62024160的博客 1514

Lombok 常用注解

Lombok 是一个 Java 库,它通过注解的方式帮助开发者减少样板代码(boilerplate code)的编写。通过使用 Lombok,开发者可以简化 getter、setter、构造函数等方法的编写,从而提高开发效率。Lombok 通过注解的方式极大地简化了 Java 代码的编写,特别是对于 getter、setter、构造函数等样板代码的生成。通过使用@Getter@Setter@ToString@Data@Builder等注解,开发者可以显著提高开发效率,减少代码冗余。

xycxycooo的博客 917

Lombok添加类注解@Data自动在class中生成setter,getter等方法

在没有lombok之前都是手写setter,getter,后来又了IDE之后能快捷键自动生成Setter,Getter等方法, 那么现在有了lombok之后,只需添加类注解@Data,那么常用的类方法都给生成了,下面来上例子哈~~~ 环境: IDEA: JDK: 没有添加@Data的注解的类[User.java] package com.esoon.ids.mod...

爱的叹息的专栏 3371

lombok注解Getter和Setter的使用(转)

1、创建类:GetterSetter,这是一个没有使用lombok的类 package im.ubu.java.lombok; /** * @Author hiwon(116268012 @ qq.com) * @Description TODO **/ public class GetterSetter { private String name = "ubu"; ...

疯猫 9178

你还在 Java 代码中写 set/get 方法?别告诉我你还没用过 Lombok!

前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态。在 Java 中,要保证封装性,需要将成员变量私有化,对外提供 set/get 方法来访问,虽然现在的 IDE,像 eclipse,IDEA都提供了快捷键,来生成 set/get 方法,但是在做项目的时候,一个 JavaBean 往往会有...

MarcoAsensio的博客 4159
上一篇: Learning Android 第1章 - 工欲善其事,必先利其器
下一篇: 将使用npm管理的node.js项目部署到vCloudLabs
lvjian700
博客等级 码龄15年 14粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值