how2j.cn

步骤 1 : pojo 的烦恼   
步骤 2 : lombok   
步骤 3 : 截图   
步骤 4 : 那么怎么使用呢   

开发项目过程中,会有很多的 pojo. pojo 又叫做 javabean,bean,entity 等等,都是他。
pojo会有很多的 setter 和 getter , toString, hashcode, equals 等等

每个 pojo 都要写,增加了属性要写,减少了属性要写,还是。。。很麻烦的。
public class Hero { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Hero [id=" + id + ", name=" + name + "]"; } public Hero(int id, String name) { super(); this.id = id; this.name = name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Hero other = (Hero) obj; if (id != other.id) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
为了偷懒,我们就可以用 lombok. 用了之后就会如下代码所示,加上注解就行了
import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; @Data public class Hero { private int id; private String name; }
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
public class Hero {
	private int id;
	private String name;
}
为了证明没有写 setter ,getter 也能访问,做了个截图,可以看到 IDE 会自动弹出已经有的方法,诺, setter, getter, toString 什么的,全部都有了-_-
截图
步骤 4 :

那么怎么使用呢

edit
为了使用,需要安装插件才可以。。。接下来就分别讲解如何在 eclipse 和 idea 里使用。


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2021-01-12 实际开发不能用Lombok
云天灬

1.JDK 版本问题 当我想要将现有项目的 JDK 从 Java 8 升级到 Java 11 时,我发现 Lombok 不能正常工作了。 于是不得不将所有的 Lombok 注解从项目源代码中清除,并使用 IDE 自带的功能生成 getter/setter,equals,hashCode,toString 以及构造器等方法,你也可以使用 Delombok 工具完成这一过程。但这终究会消耗你很多的时间。 2.胁迫使用 当你的源代码中使用了 Lombok,恰好你的代码又被其他的人所使用,那么依赖你代码的人,也必须安装 Lombok 插件 (不管他们喜不喜欢),同时还要花费时间去了解 Lombok 注解的使用情况,如果不那么做,代码将无法正常运行。使用过 Lombok 之后,我发现这是一种很流氓的行为。 3.可读性差 Lombok 隐藏了 JavaBean 封装的细节,如果你使用 @AllArgsConstructor 注解,它将提供一个巨型构造器,让外界有机会在初始化对象时修改类中所有的属性。 首先,这是极其不安全的,因为类中某系属性我们是不希望被修改的;另外,如果某个类中有几十个属性存在,就会有一个包含几十个参数的构造器被 Lombok 注入到类中,这是不理智的行为; 其次,构造器参数的顺序完全由 Lombok 所控制,我们并不能操控,只有当你需要调试时才发现有一个奇怪的 “小强” 在等着你; 最后,在运行代码之前,所有 JavaBean 中的方法你只能想象他们长什么样子,你并不能看见。 4.代码耦合度增加 当你使用 Lombok 来编写某一个模块的代码后,其余依赖此模块的其他代码都需要引入 Lombok 依赖,同时还需要在 IDE 中安装 Lombok 的插件。 虽然 Lombok 的依赖包并不大,但就因为其中一个地方使用了 Lombok,其余所有的依赖方都要强制加入 Lombok 的 Jar 包,这是一种入侵式的耦合,如果再遇上 JDK 版本问题,这将是一场灾难。 5.得不偿失 使用 Lombok,一时觉得很爽,但它却污染了你的代码,破坏了 Java 代码的完整性,可读性和安全性,同时还增加的团队的技术债务,这是一种弊大于利,得不偿失的操作。如果你确实想让自己的代码更加精炼,同时又兼顾可读性和编码效率,不妨使用主流的 Scala 或 Kotlin 这一基于 JVM 的语言。




3 个答案

四方1
答案时间:2023-08-02
哈哈哈哈说的像个罪大恶极的东西似得

丰锅神操作
答案时间:2022-01-04
你跟代码其中有一个能跑就行了。

iweb_learn
答案时间:2021-11-08
javabean你不是需要去细分DTO VO的吗 构造方法也可以手动覆盖啊 而且如果要用mybatisplus 必须使用lombok 不能一笔否认 还是结合公司的开发规范把



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2020-11-04 eclipse可以自动完成get和set方法吧
烈火君

属性写好后按shift+alt+s,可以选择generate getters and setters







回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2020-10-02 针不戳,安逸




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 应用-lombok-简介 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图