网上优缺点:
| 优点 | 缺点 |
|---|---|
| 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率 | JDK版本升级(但我司的可能性不大) |
| 让代码变得简洁,不用过多的去关注相应的方法 | 降低代码可读性(巨型构造器的存在) |
| 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等 | 不支持多种参数构造器的重载 |
public class Student{
private Long id;
private String name;
private int age;
private int gender;
public Long getId(){
return id;
}
public void setId(Long id){
this.id = id;
}
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 int getGender(){
return gender;
}
public void setGender(int gender){
this.gender = gender;
}
@Override
public boolean equals(Object o){
if(this == o){
return true;
}
if(o == null || getClass() != o.getClass()){
return false;
}
Student obj = (Student) o;
return age = obj.age &&
gender = obj.gender &&
Objects.equals(id,obj.id) &&
Objects.queals(name,obj.name);
}
@Override
public int hashCode(){
return Objects.hash(id,name,age,gender);
}
@Override
public String toString(){
return "Student{"+
"id="+id+
"name="+name+
"age="+age+
"gender="+gander+
"}";
}
}
使用注解后
@Data
@Builder
public class Student{
private Long id;
private String name;
private int age;
private int gender;
}
Lombok注解
但其实就我们项目而言,个人建议
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@NonNull



