Lombok 安装、入门 -spice up your java

简介:

简介

        官网地址:https://projectlombok.org

        提供的注解:https://projectlombok.org/features/index.html

        下载链接:https://projectlombok.org/download.html

安装方式:

        使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解

        java -jar  lombok-1.16.6.jar   目前最新的版本是:1.16.6

        然后按照提示进行安装,如果不能检测到安装的Eclipse,手工指定Eclipse的安装目录即可。

        安装后,会在Eclipse安装目录中增加lombok.jar, 并在eclipse.ini中增加如下一行:

        -javaagent:lombok.jar

         安装截图:

 

如何在maven项目中引入

        注意:代码compile后,会根据lombok的注解,增加指定的代码

        比如使用@Data注解,则编译后的字节码中会为所有属性字段增加getter setter方法   

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


示例

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import lombok.AllArgsConstructor;
import lombok.Cleanup;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.java.Log;


@Log
@NoArgsConstructor
@AllArgsConstructor
@Data
public class People {
    private String id;
    private String name;
    private String identity;


    public void writerObj(String inFile,String outFile) throws IOException {
        @Cleanup InputStream in = new FileInputStream(inFile);
        @Cleanup OutputStream out = new FileOutputStream(outFile);
        byte[] b = new byte[10000];
        while (true) {
            int r = in.read(b);
            if (r == -1)
                break;
            out.write(b, 0, r);
        }
    }
}

    编译后生成的class文件,反翻译后的代码

import java.beans.ConstructorProperties;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;

public class People
{
  private static final Logger log = Logger.getLogger(People.class.getName());
  private String id;
  private String name;
  private String identity;

  public void writerObj(String inFile, String outFile)
    throws IOException
  {
    InputStream in = new FileInputStream(inFile);
    try { OutputStream out = new FileOutputStream(outFile);
      try { byte[] b = new byte[10000];

        int r = in.read(b);
        if (r != -1)
        {
          out.write(b, 0, r);
        }
      }
      finally
      {
        if (Collections.singletonList(out).get(0) != null) out.close();
      }
    }
    finally
    {
      if (Collections.singletonList(in).get(0) != null) in.close();
    }
  }

  public People()
  {
  }

  @ConstructorProperties({"id""name""identity"})
  public People(String id, String name, String identity)
  {
    this.id = id; this.name = name; this.identity = identity; } 
  public String getId() { return this.id; } 
  public String getName() { return this.name; } 
  public String getIdentity() { return this.identity; } 
  public void setId(String id) { this.id = id; } 
  public void setName(String name) { this.name = name; } 
  public void setIdentity(String identity) { this.identity = identity; } 
  public boolean equals(Object o) { if (o == thisreturn trueif (!(o instanceof People)) return false; People other = (People)o; if (!other.canEqual(this)) return falseObject this$id = getId(); Object other$id = other.getId(); if (this$id == null ? other$id != null : !this$id.equals(other$id)) return falseObject this$name = getName(); Object other$name = other.getName(); if (this$name == null ? other$name != null : !this$name.equals(other$name)) return falseObject this$identity = getIdentity(); Object other$identity = other.getIdentity(); return this$identity == null ? other$identity == null : this$identity.equals(other$identity); } 
  protected boolean canEqual(Object other) { return other instanceof People; } 
  public int hashCode() { int PRIME = 59int result = 1Object $id = getId(); result = result * 59 + ($id == null ? 43 : $id.hashCode()); Object $name = getName(); result = result * 59 + ($name == null ? 43 : $name.hashCode()); Object $identity = getIdentity(); result = result * 59 + ($identity == null ? 43 : $identity.hashCode()); return result; } 
  public String toString() { return "People(id=" + getId() + ", name=" + getName() + ", identity=" + getIdentity() + ")"; }

}

目录
相关文章
|
20天前
|
关系型数据库 Java 开发工具
Java入门高频考查基础知识9(15问万字参考答案)
本文探讨了Spring Cloud的工作原理,包括注册中心的心跳机制、服务发现机制,以及Eureka默认的负载均衡策略。同时,概述了Spring Boot中常用的注解及其实现方式,并深入讨论了Spring事务的注解、回滚条件、传播性和隔离级别。文章还介绍了MySQL的存储引擎及其区别,特别关注了InnoDB如何实现MySQL的事务处理。此外,本文还详细探讨了MySQL索引,包括B+树的原理和设计索引的方法。最后,比较了Git和SVN的区别,并介绍了Git命令的底层原理及流程。
29 0
Java入门高频考查基础知识9(15问万字参考答案)
|
20天前
|
存储 缓存 算法
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
最重要的是保持自信和冷静。提前准备,并对自己的知识和经验有自信,这样您就能在面试中展现出最佳的表现。祝您面试顺利!Java 是一种广泛使用的面向对象编程语言,在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性,适用于多种应用场景,包括企业应用、移动应用、嵌入式系统等。下是几个面试技巧:复习核心概念、熟悉常见问题、编码实践、项目经验准备、注意优缺点、积极参与互动、准备好问题问对方和知其所以然等,多准备最好轻松能举一反三。
46 0
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
|
20天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
32 0
|
20天前
|
存储 Java 编译器
Java入门高频考查基础知识2(超详细28题2.5万字答案)
多态是面向对象编程中的一个重要概念,它允许不同类的对象对同一消息作出不同的响应。在具体实现上,多态允许一个父类的引用指向其子类的对象,并根据实际指向的对象的类型来调用相应的方法。在 Java 中,多态可以通过以下几种方式实现:在同一个类中,方法名相同,但形参列表不同,实现了多态。子类可以重写(覆盖)其父类的方法,实现多态。在父类引用中调用该方法时,根据实际指向的子类对象的类型来调用相应的方法实现。
38 0
|
21天前
|
IDE 安全 Java
Lombok的优缺点不建议使用
Lombok的优缺点不建议使用
18 0
|
1月前
|
算法 Java
Java必刷入门递归题×5(内附详细递归解析图)
Java必刷入门递归题×5(内附详细递归解析图)
21 1
|
1月前
|
Java
Java入门必刷的基础题1(八道)
Java入门必刷的基础题1(八道)
20 0
|
3月前
|
安全 Java
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
|
6月前
|
Java
Java入门------static关键字和静态属性、方法
Java入门------static关键字和静态属性、方法