本文共 3805 字,大约阅读时间需要 12 分钟。
在开发的过程中,我们如何写出高质量的代码,写出优雅的代码,写出高度可扩展的代码。今天我们就简单介绍一下如何提高我们的代码质量。
在介绍lombok之前,我们先来看一段代码:
public class Person { private Long id; private String name; private Integer age; private Integer sex; 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 Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; }}
这段代码大家应该都很熟悉,我们在开发javaweb项目时,定义一个Bean,会先写好属性,然后设置getter/setter
方法,这段代码本身没有任何问题,也必须这样写。但是每个bean都需要getter/setter,这样写的话代码就不够优雅了,这段代码我们如何优雅的写呢?接下来,就轮到lombok出场了。
lombok是一个通过注解形式来简化我们的代码的一个插件,要使用它,我们应该先安装插件,安装步骤如下:
1.file ---->setting---->plugins2、搜索lombok,并安装它,然后重启。
3、在file --> setting -->Build --> compiler 找到Annotaion Processors,将 Enable annotaion processing 勾选上。
4、 最后我们需要添加lombok的依赖:
org.projectlombok lombok 1.18.0 provided
接下来,我们通过注解简化Person类
import lombok.Getter;import lombok.Setter;@Setter@Getterpublic class Person { private Long id; private String name; private Integer age; private Integer sex;}
我们可以看到,在类上加入了Getter 和Setter 两个注解,将之前写的getter /setter 方法干掉了,这种代码看者清爽,写个main方法测试下:
public static void main(String[] args) { Person person = new Person(); person.setName("lynn"); person.setId(1L); System.out.println(person.getName()); }
我们并没有写任何的getter\setter 方法,只是加了两个注解就可以调用了,这是为什么呢?这是因为lombok提供了Getter 和Setter 注解,是编译时注解,也就是在编译时,lombok会自动为我们添加getter /setter方法,因此我们不需要去写get /set方法就可以直接调用。
lombok 提供了很多注解,下面我们了解一下其他的注解:
该注解的作用是:是否开启链式调用,比如我们开始链式调用:
import lombok.Getter;import lombok.Setter;import lombok.experimental.Accessors;@Setter@Getter//chain 设置为true表示开始链式调用@Accessors(chain = true)public class Person { private Long id; private String name; private Integer age; private Integer sex; public static void main(String[] args) { Person p = new Person(); p.setName("li").setAge(14); }}
构建者模式 ,我们在使用第三方框架时经常看到Builder 模式,比如HttpClient 的:
RequestConfig config = RequestConfig.custom() .setConnectionRequestTimeout(timeout) .setConnectTimeout(timeout) .setSocketTimeout(timeout) .build();
那么通过 Builder 注解可以很方便的实现它:
@Setter@Getter//chain 设置为true表示开始链式调用@Accessors(chain = true)@Builderpublic class Person { private Long id; private String name; private Integer age; private Integer sex; public static void main(String[] args) { Person p = new PersonBuilder().name("zhang").age(12).build(); System.out.println("name:"+p.getName()); }}
编译时添加getter、setter、toString、equals 和hashCode方法,如:
@Datapublic class Person { private Long id; private String name; private Integer age; private Integer sex; public static void main(String[] args) { Person person = new Person(); person.setName("zhang"); System.out.println("name:"+person.getName()); }}
添加输入输出流close 方法,如:
public static void main(String[] args) throws Exception{ @Cleanup InputStream inputStream = new FileInputStream("1.txt"); }
我们通过断点调试发现,它会调用close(),说明lombok 帮我们生成了close()
通过lombok 的注解,可以极大的减少我们的代码量,并且更加清爽,更加优雅。
lombok 还有很多注解:如:转载地址:http://ecfoi.baihongyu.com/