简介
Lombok
对于
Java偷懒开发者
来说应该是比较中意的。在技术框架的海洋里寻找了很久才在
GitHub
开源平台上找到,而在这之前国外很多程序猿一直使用该框架了,
Lombok
框架提供了很多编码遍历,但是也降低了代码的阅读力。下面我们看看在Idea开发工具中该怎么使用
Lombok
?
目标
使用Lombok提高开发效率。
安装
Maven:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<scope>provided</scope>
</dependency>
Gradel:
provided group: 'org.projectlombok', name: 'lombok', version: '1.18.0'
Intellij idea开发的话建议安装Lombok plugin
一、使用:@Getter和@Setter
你可以用@Getter和@Setter注释任何字段(当然也可以注释到类上), 让Lombok自动生成默认的getter/setter方法.
默认生成的方法是public的, 如果要修改方法修饰符可以设置AccessLevel的值(PUBLIC
, PROTECTED
, PACKAGE
, PRIVATE
)
With Lombok
public class GetterSetterExample {
/**
* Getter和Setter方法
*/
@Getter @Setter private int age = 10;
/**
* Setter方法(修饰符protected)
*/
@Setter(AccessLevel.PROTECTED) private String name;
}
Vanilla Java
public class GetterSetterExample {
private int age = 10;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
protected void setName(String name) {
this.name = name;
}
}
二、使用:@ToString
生成toString()方法, 默认情况下, 它会按顺序打印你的类名称以及每个字段, 由逗号分隔.
可以设置不包含哪些字段: @ToString.Exclude
如果继承父类的话,可以设置callSuper让其调用父类的toString()方法: @ToString(callSuper = true)
可以设置是否包含字段的信息, 默认为true: @ToString(includeFieldNames = true)
With Lombok
@ToString
public class ToStringExample {
private static final int STATIC_VAR = 10;
private String name;
private Shape shape = new Square(5, 10);
// 设置不包含字段
@ToString.Exclude private int id;
public String getName() {
return this.name;
}
// 调用父类toString()并输出字段信息
@ToString(callSuper=true, includeFieldNames=true)
public static class Square extends Shape {
private final int width, height;
public Square(int width, int height) {
this.width = width;
this.height = height;
}
}
}
Vanilla Java
public class ToStringExample {
private static final int STATIC_VAR = 10;
private String name;
private Shape shape = new Square(5, 10);
private int id;
public String getName() {
return this.getName();
}
public static class Square extends Shape {
private final int width, height;
public Square(int width, int height) {
this.width = width;
this.height = height;
}
// 调用父类toString并输出字段信息
@Override public String toString() {
return "Square(super=" + super.toString() + ", width=" + this.width + ", height=" + this.height + ")";
}
}
// 不包含id字段
@Override public String toString() {
return "ToStringExample(" + this.getName() + ", " + this.shape ")";
}
}