在Java中使用Lombok注解开发
1. 未使用Lombok的代码
package JavaPackage_11;
public class Person {
private String name;
private int age;
private String userId;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", userId='" + userId + '\'' +
'}';
}
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;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public Person(String name, int age, String userId) {
this.name = name;
this.age = age;
this.userId = userId;
}
public Person() {
}
}
需要手动创建getter、setter方法,toString方法,空参构造器和有参构造器。
2. 使用Lombok
通过注解进行添加
1. 添加依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
2. 使用插件
3. 注解使用
@AllArgsConstructor //带参构造器
@NoArgsConstructor //不带参构造器
@Getter //提供Getter方法
@Setter //提供Setter方法
@ToString //提供toString方法
package org.java;
import lombok.*;
public class App {
public static void main( String[] args ) {
System.out.println( "Hello World!" );
Person person = new Person();
person.setAge(18);
person.setName("zs");
person.setId("1234567890");
System.out.println(person.toString());
Person person1 = new Person("ls", 20, "0321569870");
}
}
@AllArgsConstructor //带参构造器
@NoArgsConstructor //不带参构造器
@Getter //提供Getter方法
@Setter //提供Setter方法
@ToString //提供toString方法
class Person {
private String name;
private int age;
private String id;
}
@ToString(exclude = {“age”,“id”}) //提供toString方法,并排除某些属性
@NonNull //属性不为空 提供setter方法试图传递null时将会保错
Exception in thread "main" java.lang.NullPointerException: name is marked non-null but is null at org.java.Person.setName(App.java:23) at org.java.App.main(App.java:13)
@RequiredArgsConstructor //提供NonNull的参数构造器
public class App {
public static void main( String[] args ) {
System.out.println( "Hello World!" );
Person person = new Person();
person.setName(null);
person.setId("1234567890");
System.out.println(person.toString());
System.out.println(person.getAge());
}
}
@AllArgsConstructor //带参构造器
@NoArgsConstructor //不带参构造器
@Getter //提供Getter方法
@Setter //提供Setter方法
@ToString(exclude = {"age","id"}) //提供toString方法,并排除某些属性
class Person {
@NonNull //属性不为空
private String name;
private int age;
private String id;
}
@EqualsAndHashCode //提供equals方法和hashCode方法
package org.java;
import lombok.*;
public class App {
public static void main( String[] args ) {
Person person1 = new Person("zs",1,"1");
Person person2 = new Person("zs",1,"1");
System.out.println(person1.hashCode());
System.out.println(person2.hashCode());
System.out.println(person1.equals(person2)); //true
}
}
@Setter
@Getter
@AllArgsConstructor
@EqualsAndHashCode //提供equals方法和hashCode方法
class Person {
@NonNull //属性不为空
private String name;
private int age;
private String id;
}
@Data //提供Getter Setter 无参构造器 有参构造器 equals方法 hashCode方法 toString方法
@Data //提供Getter Setter 无参构造器 有参构造器 equals方法 hashCode方法 toString方法
class Person {
@NonNull //属性不为空
private String name;
private int age;
private String id;
}
ng方法
```java
@Data //提供Getter Setter 无参构造器 有参构造器 equals方法 hashCode方法 toString方法
class Person {
@NonNull //属性不为空
private String name;
private int age;
private String id;
}
4. 总结
@AllArgsConstructor //带参构造器
@NoArgsConstructor //不带参构造器
@Getter //提供Getter方法
@Setter //提供Setter方法
@ToString //提供toString方法
@ToString(exclude = {"age","id"}) //提供toString方法,并排除某些属性
@NonNull //属性不为空 提供setter方法试图传递null时将会保错
@RequiredArgsConstructor //提供NonNull的参数构造器
@EqualsAndHashCode //提供equals方法和hashCode方法
@Data //提供Getter Setter 无参构造器 有参构造器 equals方法 hashCode方法 toString方法