lombok.jar注解简析
父类 BaseModel
import lombok.Data;
@Data
public class BaseModel {
private Long id;
private Long createUserId;
private Long updateUserId;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.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;
BaseModel other = (BaseModel) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
子类
@Data
@EqualsAndHashCode(callSuper=true)
public class Model01 extends BaseModel {
/**
* 名字
*/
private String tname;
/**
* ID
*/
private int tid;
/**
* 名字2
*/
private String tname2;
public void setTname(String name) {
this.tname = name;
if (name != null) {
tname2 = name;
}
}
测试
public class Test {
public static void main(String[] args) {
TestModel model = new TestModel();
model.setTname2("李四");
model.setTname("张三");
System.out.println(model.getTname2());
}
}
输出结果:张三
分析:
- @Getter/@Setter : 注解在参数上,给参数提供读写方法
- @Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString()方法。当父类重写了equals()、hashCode()方法时,子类如果需要继承父类的该方法需要设置@EqualsAndHashCode(callSuper=true);反之@EqualsAndHashCode(callSuper=false)。
- 添加了@Data注解的类,如果重写了getter或setter方法,则重写的方法覆盖@Data自动生成的方法。