懒人变方便是方便,但是移植和兼容低版本JDK的时候,条件就多了!
@Getter
和 @Setter
注解的作用是为类的字段自动生成 getter
和 setter
方法。手动实现时,需要为每个字段编写对应的 getter
和 setter
方法。
@ToString
注解用于自动为类生成 toString
方法。手动实现时,要重写 toString
方法。
@EqualsAndHashCode
注解会自动生成 equals
和 hashCode
方法。手动实现时,需重写这两个方法。
@NoArgsConstructor
注解的作用是为类生成无参构造函数。手动实现时,直接编写一个无参构造函数即可。
@AllArgsConstructor
注解为类的所有字段生成一个包含所有参数的构造函数。手动实现时,编写一个包含所有字段作为参数的构造函数。
@Data
注解是一个组合注解,包含了 @Getter
、@Setter
、@ToString
、@EqualsAndHashCode
和 @RequiredArgsConstructor
的功能。手动实现时,需要将上述功能的代码组合起来。
@Slf4j
注解为类自动生成一个 SLF4J 日志记录器。手动实现时,需要手动声明日志记录器。
package zwf;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Objects;
public class Lombok
{
// 定义属性
private String code;
private String name;
// 手动实现 @Slf4j 的功能,声明日志记录器
private static final Logger log = LoggerFactory.getLogger(Lombok.class);
// 手动实现 @NoArgsConstructor 的功能,无参构造函数
public Lombok()
{
}
// 手动实现 @AllArgsConstructor 的功能,全参构造函数
public Lombok(String code, String name)
{
this.code = code;
this.name = name;
}
// 手动实现 @Getter 的功能,为 code 属性生成 getter 方法
public String getCode()
{
return code;
}
// 手动实现 @Setter 的功能,为 code 属性生成 setter 方法
public void setCode(String code)
{
this.code = code;
}
// 手动实现 @Getter 的功能,为 name 属性生成 getter 方法
public String getName()
{
return name;
}
// 手动实现 @Setter 的功能,为 name 属性生成 setter 方法
public void setName(String name)
{
this.name = name;
}
// 手动实现 @ToString 的功能,重写 toString 方法
@Override
public String toString()
{
return "ZengWenFeng{" +
"code='" + code + '\'' +
", name='" + name + '\'' +
'}';
}
// 手动实现 @EqualsAndHashCode 的功能,重写 equals 方法
@Override
public boolean equals(Object o)
{
if (this == o)
{
return true;
}
if (o == null || getClass() != o.getClass())
{
return false;
}
Lombok that = (Lombok) o;
return Objects.equals(code, that.code) &&
Objects.equals(name, that.name);
}
// 手动实现 @EqualsAndHashCode 的功能,重写 hashCode 方法
@Override
public int hashCode()
{
return Objects.hash(code, name);
}
// 示例方法,使用日志记录器
public void doSomeLogging()
{
log.info("Doing some logging for ZengWenFeng with code: {} and name: {}", code, name);
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
Lombok person = new Lombok("005129", "ZengWenFeng");
person.doSomeLogging();
System.out.println(person);
Lombok anotherPerson = new Lombok("005128", "ZengWenFeng");
System.out.println(person.equals(anotherPerson));
}
}