Lombok

前一段时间跟老师了一个项目,还算是有所大开眼界,当时发现了一个叫做@DATA的注解,竟然使用不需要写getter、setter方法,很是方便。后来查阅资料才知道是Lombok的注解。

当然能够偷懒的东西自然有利有弊

Lombok

是一个Java库,能够自动插入编辑器并自动构建工具,简化Java开发。通过使用注解的方式,不需要给类编写getter和eques方法,并且能够自动化日历变量。

使用

开发环境要Maven+Java+idea或者eclipse(安装Lombok插件)
插件的话可以去官网上下载
官网,可能下载慢

使用maven依赖

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.4</version>
	<scope>provided</scope>
</dependency>

idea里安装插件
Setting->Plugins->搜索lombok即可
在这里插入图片描述

上面的设置可以选择离线下载,配置完成重启idea即可。
路径如下:
https://github.com/mplushnikov/lombok-intellij-plugin/releases

选择对应的idea版本进行下载,否则会报版本不一致的错误
Plugin incompatible with the new build found: Lombok

Lombok的常用注解

  • @Setter:对应生成setter方法
  • @Getter:对应生成getter方法
  • @NoArgsConstructor:对应生成无参构造器方法
  • @AllArgsConstructor:对应生成有参构造器方法
  • @ToString:对应生成toSting方法
  • @Slf4j:在需要打印日志的类中使用,当项目中使用了slf4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可
  • @Log4j:在需要打印日志的类中使用,当项目中使用了log4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;
  • @EqualsAndHashCode:
  • @DATA:在JavaBean中使用,这个注解包含范围最广,它包含getter、setter注解,即当使用当前注解时,会自动生成包含的所有方法;

以上全部使用在JavaBean中

推荐写法

@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class UserInfo {

	private String name;
	
	@Builder.Default
	private String email = "bgood@sina.com";

}

示例:
创建一个评论信息类四个字段比较区别

明显还是区别很大

  • 使用注解
@Data
public class News implements Serializable {

    private Integer id;
    private String name;
    private String content;
    private Date addTime;
}
  • 不使用注解
import java.io.Serializable;
import java.util.Date;


public class News implements Serializable {

    private Integer id;
    private String name;
    private String content;
    private Date addTime;

    public News(Integer id, String name, String content, Date addTime) {
        this.id = id;
        this.name = name;
        this.content = content;
        this.addTime = addTime;
    }

    public News() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getAddTime() {
        return addTime;
    }

    public void setAddTime(Date addTime) {
        this.addTime = addTime;
    }

    @Override
    public String toString() {
        return "News{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", content='" + content + '\'' +
                ", addTime=" + addTime +
                '}';
    }
}

Lombok的优缺点

优点:

  1. 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率。
  2. 让代码变得简洁,不用过多的去关注相应的方法属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等。

缺点:

  1. 不支持多种参数构造器的重载。
  2. 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度,不适合新手使用。
  3. JDK版本问题:当版本不止一直的话,就不能正常使用。
  4. 绑定使用:当你使用别人的代码时,如果别人使用lombok。你也必须下载安装插件使用。
  5. 使用Lombok,一时觉得很爽,但它却污染了你的代码,破坏了Java代码的完整性,可读性和安全性。
  6. 代码耦合度增加。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值