Java —— 自动生成get、set方法(使用lombok的注解@Getter @Setter)

博客指出Java中编写get、set方法无聊且不美观,提出解决办法。首先在IDEA中安装lombok插件,接着在项目里增加lombok的maven依赖,最后在类上添加注解@Getter @Setter,以此简化get、set方法编写。

问题

get、set方法写起来十分无聊,看着也难受,有没有简便的方法呢?

解决

1、在IDEA中安装lombok插件

2、在项目中增加lombok的maven依赖

		<!--lombok 引入-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.10</version>
		</dependency>

3、在类上增加注解@Getter @Setter

 

<think> 我们讨论的是在Java实体类中,应该使用Lombok@Getter@Setter注解还是手动编写getset方法。 这两种方式各有优缺点,下面详细解释: 1. 使用Lombok@Getter@Setter注解: - 优点:代码简洁,减少了样板代码,提高了开发效率。当类的属性很多时,可以避免编写大量重复的getset方法。 - 缺点:需要项目引入Lombok依赖,并且IDE需要安装Lombok插件,否则在IDE中可能无法识别这些注解而报错。另外,使用注解生成的代码在编译时产生,可能对某些工具(如反射、序列化等)有潜在影响,但通常可以忽略。 2. 手动编写getset方法: - 优点:不需要额外的依赖和插件,兼容性好,代码可见,易于调试。可以在getter和setter方法中加入额外的逻辑(如数据验证、日志等)。 - 缺点:当属性很多时,代码量会很大,显得冗余。 根据实际情况选择: - 如果项目已经使用Lombok,并且团队都熟悉和接受Lombok,那么推荐使用注解方式。 - 如果项目没有使用Lombok,或者对引入新库有顾虑,或者需要在getter/setter中加入额外逻辑,那么手动编写是更好的选择。 示例代码: 使用Lombok: ```java import lombok.Getter; import lombok.Setter; @Getter @Setter public class XxxxEntity { private String name; private int age; // 其他属性... } ``` 手动编写: ```java public class XxxxEntity { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } // 其他属性的getter和setter... } ``` 结论: 根据项目实际情况和团队规范选择。如果追求简洁和效率,且项目允许使用Lombok,则使用注解;如果希望代码清晰可见且避免额外依赖,或者需要自定义getter/setter逻辑,则手动编写。 §§相关问题§§: 1. 使用Lombok@Getter@Setter注解有什么潜在的问题? 2. 在哪些情况下应该避免使用Lombok? 3. 如何在getter和setter方法中加入业务逻辑? 4. Lombok除了@Getter@Setter,还有哪些常用注解? </think> 在Java实体类中使用`@Getter`和`@Setter`注解还是手动编写get/set方法,取决于项目需求和团队规范,以下是详细对比和建议: ### 1. **推荐使用`@Getter`和`@Setter`的场景** ```java import lombok.Getter; import lombok.Setter; @Getter @Setter // 类级别注解 public class UserEntity { private Long id; private String name; // 无额外逻辑的属性 } ``` **优点**: - **代码简洁**:Lombok自动生成字节码级的get/set方法,减少样板代码 - **可维护性**:属性增减时无需手动修改get/set方法 - **开发效率**:适合纯数据载体(如DTO、Entity) **要求**: - 项目需引入Lombok依赖 - IDE需安装Lombok插件(否则编译报错) - 团队接受Lombok技术栈 --- ### 2. **推荐手动编写get/set的场景** ```java public class UserEntity { private String name; // 手动编写带逻辑的getter public String getName() { // 添加业务逻辑(如格式化) return name != null ? name.trim() : ""; } // 手动编写带校验的setter public void setName(String name) { if (name == null || name.isEmpty()) { throw new IllegalArgumentException("Name cannot be empty"); } this.name = name; } } ``` **优点**: - **灵活控制**:可在方法中添加校验、格式化、日志等逻辑 - **无依赖**:避免Lombok的兼容性问题(如旧版IDE、特殊序列化需求) - **代码可见性**:直接查看方法实现,无“黑盒”生成 --- ### 3. **混合方案(特定属性自定义)** ```java @Getter @Setter public class UserEntity { private Long id; // 自动生成getter/setter @Setter(AccessLevel.NONE) // 禁止生成setter private String readonlyField; private String customField; // 手动覆盖特定属性的getter public String getCustomField() { return "Modified: " + this.customField; } } ``` ### ⚠️ **决策关键点** | 因素 | 推荐方案 | |---------------------|------------------------| | 需要属性逻辑控制 | 手动编写 | | 纯数据载体类 | Lombok注解 | | 旧项目/无Lombok环境 | 手动编写 | | 需要精细访问控制 | 手动编写(如`protected setXxx()`) | **结论**: - **无业务逻辑** → 用`@Getter`/`@Setter` - **需校验/转换** → 手动编写 - **关键类**(如核心领域模型)→ 建议手动编写以提高可读性和可控性
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宇宙超级无敌程序媛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值