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 == this) return true; if (!(o instanceof People)) return false; People other = (People)o; if (!other.canEqual(this)) return false; Object this$id = getId(); Object other$id = other.getId(); if (this$id == null ? other$id != null : !this$id.equals(other$id)) return false; Object this$name = getName(); Object other$name = other.getName(); if (this$name == null ? other$name != null : !this$name.equals(other$name)) return false; Object 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 = 59; int result = 1; Object $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() + ")"; }

}

 
 

目录
相关文章
|
12月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
873 0
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
824 0
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
756 115
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
1509 3
|
Java API 数据库
2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
3128 0
|
监控 Java API
2025 年全新出炉的 Java 学习路线:从入门起步到实操精通的详细指南
2025年Java学习路线与实操指南,涵盖Java 21核心特性、虚拟线程、Spring Boot 3、微服务、Spring Security、容器化部署等前沿技术,助你从入门到企业级开发进阶。
1681 0
|
安全 Java
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
|
存储 Java API
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
617 0
|
Java 索引
从零开始学习 Java:简单易懂的入门指南之方法(六)
方法的概念:方法(method)是程序中最小的执行单元注意:方法必须先创建才可以使用,该过程成为方法定义,方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用
从零开始学习 Java:简单易懂的入门指南之方法(六)