版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ChenXvYuan_001/article/details/84961992
lombok是一款在java开发中简洁化代码十分有用的插件工具,这篇博客对较为常用的几种注解进行记录,分享学习心得。
使用lombok注解,目的和作用就在于不用再去写经常反复去写的(如Getter,Setter,Constructor等)一些代码了。
首先,用到的几个注解:
@Data
使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。
@AllArgsConstructor
使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数
@NoArgsConstructor
使用后创建一个无参构造函数
@Builder
关于Builder较为复杂一些,Builder的作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数,
然后,通过一个简单的代码例子说明:
1)首先,建立一个简单的类,并用lombok进行注解:注意这是注解前的代码,可以与后面贴出的注解生成的代码进行比较
@Data //生成getter,setter等函数
@AllArgsConstructor //生成全参数构造函数
@NoArgsConstructor//生成无参构造函数
@Builder
public class test1 {
String name;
String age;
String sex;
}
1
2
3
4
5
6
7
8
9
2)测试入口:
public static void main(String[] args) {
//使用@Builder注解后,可以直接通过Builder设置字段参数
test1 t1=new test1.test1Builder()
.name("wang")
.age("12")
.sex("man")
.build();
System.out.println("name is"+t1.getName()+'\n'+"age is :"+t1.getAge());
}
1
2
3
4
5
6
7
8
9
10
11
3)通过查看编译后的类,比较注解前后的代码量,发现会省去了很多代码的书写:
public class test1 {
String name;
String age;
String sex;
public static test1.test1Builder builder() {
return new test1.test1Builder();
}
public String getName() {
return this.name;
}
public String getAge() {
return this.age;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
public boolean equals(Object o) {
if (o == this) {
return true;
} else if (!(o instanceof test1)) {
return false;
} else {
test1 other = (test1)o;
if (!other.canEqual(this)) {
return false;
} else {
label47: {
Object this$name = this.getName();
Object other$name = other.getName();
if (this$name == null) {
if (other$name == null) {
break label47;
}
} else if (this$name.equals(other$name)) {
break label47;
}
return false;
}
Object this$age = this.getAge();
Object other$age = other.getAge();
if (this$age == null) {
if (other$age != null) {
return false;
}
} else if (!this$age.equals(other$age)) {
return false;
}
Object this$sex = this.getSex();
Object other$sex = other.getSex();
if (this$sex == null) {
if (other$sex != null) {
return false;
}
} else if (!this$sex.equals(other$sex)) {
return false;
}
return true;
}
}
}
protected boolean canEqual(Object other) {
return other instanceof test1;
}
public int hashCode() {
int PRIME = true;
int result = 1;
Object $name = this.getName();
int result = result * 59 + ($name == null ? 43 : $name.hashCode());
Object $age = this.getAge();
result = result * 59 + ($age == null ? 43 : $age.hashCode());
Object $sex = this.getSex();
result = result * 59 + ($sex == null ? 43 : $sex.hashCode());
return result;
}
public String toString() {
return "test1(name=" + this.getName() + ", age=" + this.getAge() + ", sex=" + this.getSex() + ")";
}
@ConstructorProperties({"name", "age", "sex"})
public test1(String name, String age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public test1() {
}
public static class test1Builder {
private String name;
private String age;
private String sex;
test1Builder() {
}
public test1.test1Builder name(String name) {
this.name = name;
return this;
}
public test1.test1Builder age(String age) {
this.age = age;
return this;
}
public test1.test1Builder sex(String sex) {
this.sex = sex;
return this;
}
public test1 build() {
return new test1(this.name, this.age, this.sex);
}
public String toString() {
return "test1.test1Builder(name=" + this.name + ", age=" + this.age + ", sex=" + this.sex + ")";
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
总结:lombok注解使用起来会很方便,可以多去了解不同注解的作用。
另贴一些相关的博客:
lombok 安装使用及一些注解功能:
https://blog.csdn.net/motui/article/details/79012846
java Builder:
http://www.cnblogs.com/moonz-wu/archive/2011/01/11/1932473.html
https://www.cnblogs.com/begin1949/p/4930896.html
————————————————
版权声明:本文为CSDN博主「旭氏美术馆」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ChenXvYuan_001/article/details/84961992
相关推荐
Eclipse(Spring Tool Suite, STS)是一款广泛使用的Java集成开发环境,而Lombok则是一个流行的Java库,它通过注解的方式简化了Java代码,比如自动处理getter、setter、构造函数等。在Eclipse或STS中安装Lombok插件...
Lombok提供了多个注解来满足不同场景的需求,下面详细介绍几个常用的注解: - **`@Data`**:这是一个复合注解,包含了`@ToString`、`@EqualsAndHashCode`、`@Getter`、`@Setter`、`@RequiredArgsConstructor`。它为...
在 Lombok 源码中,主要涉及以下几个核心知识点: 1. 注解处理器(Annotation Processor):Lombok 的核心是使用 Java 的 Annotation Processing Tool (APT)。APT 允许在编译期间处理源代码,基于注解自动生成代码...
2. 运行安装,使用命令 `java -jar lombok.jar`,等待几秒钟,直到出现安装成功的页面。 3. 在 Eclipse 安装路径下新增一个配置文件,内容如下: ``` -javaagent:lombok.jar -Xbootclasspath/a:lombok.jar ``` 4. ...
例如,如果你在 SpringBoot 中定义了一个 Entity 类,使用 `@Data` 注解,Lombok 将自动为你生成 equals, hashCode, getters 和 setters,使得在使用 JPA 进行数据库操作时更加方便。 在使用 Lombok 时,需要注意...
1. `@Data`:这是 Lombok 最常用的注解之一,可以为类生成所有的基本 getter 和 setter,同时还会添加 equals、hashCode 和 toString 方法。如果需要排除某些字段,可以使用 `@AndHashCode(exclude = {...})` 和 `@...
Lombok的注解主要有以下几个: 1. `@Data`:这是Lombok最常用的注解之一,它会自动生成类的所有非静态字段的getter和setter,同时还会生成一个全参数的构造函数。 2. `@AllArgsConstructor`:此注解会为类生成一个...
在使用Lombok时,常见的注解有以下几种: 1. `@Data`: 自动生成所有字段的getter和setter,以及equals(), hashCode()和toString()方法。 2. `@Setter` 和 `@Getter`: 分别生成setter和getter方法,可以指定访问级别...
这个插件使得开发者无需手动添加 getter、setter、构造函数、equals、hashCode 和 toString 方法等,只需在类上使用 Lombok 提供的注解如 `@Data`、`@AllArgsConstructor`、`@NoArgsConstructor`、`@...
lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter...
然而,使用Lombok也需要注意几点: 1. 需要安装对应的IDE插件,以便在编写代码时能正确识别和处理Lombok注解。 2. Lombok不支持所有的编译器和构建工具,确保你的环境支持Lombok。 3. 使用Lombok可能导致IDE的代码...
Java Lombok是一个非常实用的Java库,它通过提供一系列注解来简化代码,尤其是那些通常在getter、setter、构造函数、equals、hashCode和toString方法中出现的样板代码。Lombok的目标是减少Java开发者编写冗余代码的...
通过在类的字段上使用`@Getter`和`@Setter`注解,Lombok会在编译时自动生成对应的getter和setter方法,避免了手动编写这些重复代码的麻烦。同时,`@Data`注解可以作为简化的替代,它会为所有非静态、非final的字段...
Lombok的使用有几点需要注意: - Lombok仅在编译时起作用,它不会改变源代码本身,因此需要在构建工具(如Maven或Gradle)中添加Lombok依赖。 - 为了使IDE识别Lombok注解,需要在项目中引入Lombok的依赖,并且安装...
使用 Lombok 时需要注意的几点: - Lombok 需要在构建工具(Maven 或 Gradle)中配置,添加对应的插件才能在编译时处理注解。 - IDE 需要安装 Lombok 插件,以便在编写代码时能看到注解生成的方法。 - Lombok 不适用...
这个压缩包通常包含了Lombok库的源码、JAR文件以及相关的文档,以便开发者在项目中引入和使用。安装Lombok通常需要将其添加到构建工具(如Maven或Gradle)的依赖中,或者在IDE(如IntelliJ IDEA或Eclipse)中安装...
例如,在使用Spring Data JPA时,Lombok可以帮助我们创建简洁的实体类,无需为每个字段添加`@Column`注解和getter/setter。只需在实体类上添加`@Entity`,在需要映射的字段上添加`@Id`或`@GeneratedValue`,Lombok将...
1. `@Data`:这个注解是最常用的,它会为类生成所有的 getter 和 setter,同时还会生成 `toString()`、`hashCode()` 和 `equals()` 方法。如果类中包含 `final` 字段,`@Data` 不会生成对应的 setter。 2. `@...
这个过程通常分为几个步骤: 1. **下载Lombok插件**:你提到的"lombok-idea-本地安装插件及jar包"可能包含了一个.zip或.tar.gz格式的插件包。你需要先从官方网站或者第三方网站找到适用于你IDE版本的Lombok插件。...