lombok插件使用_cesium显示全球视野

lombok插件使用_cesium显示全球视野Lombok是什么?lombok是java自动生成代码的插件。它能提高开发效率,减少自己编写繁琐的代码,让代码看起来更整洁简略,比如getter、setter、equals以及construct等方法。其也有val、var这种自动判断变量类型的变量定义方式(类似javascript中的let、const)。Lombok使用在开发ide中安装lombok插件,然后加上lombok的依赖包…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Lombok是什么?

lombok是java自动生成代码的插件。它能提高开发效率,减少自己编写繁琐的代码,让代码看起来更整洁简略,比如getter、setter、equals以及construct等方法。其也有val、var这种自动判断变量类型的变量定义方式(类似javascript中的let、const)。

Lombok使用

在开发ide中安装lombok插件,然后加上lombok的依赖包即可。如下以idea为例:

  • 插件
    这里写图片描述
    • 依赖
    <dependencies>
        <dependency>
         <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
          <optional>true</optional>
        </dependency>
    </dependencies>

Lombok特性

val

val可以用于定义局部变量,能根据变量的初始化值来推断出变量的类型,且用final进行修饰。示例如下:

import lombok.val;
import java.util.ArrayList;

public class ValExample {
    public static void main(String[] args){
        val array = new ArrayList<String>();
        array.add("val..");
        for(val obj: array){
            System.out.println(obj);
        }
    }
}

var

var和val类似,区别在于不再有final进行修饰。

@NonNull

该注解可以用于参数的空指针检查,避免出现讨厌的空指针问题。示例如下:

import lombok.NonNull;

public class NonNullExample {

    private Person person;

    public NonNullExample(@NonNull Person person){
        this.person = person;
    }

    class Person {
        private String name;
        private Integer age;
        Person(String name, Integer age){
            this.name = name;
            this.age = age;
        }
    }
}

如下是编译后的代码:

import lombok.NonNull;

public class NonNullExample {
    private NonNullExample.Person person;

    public NonNullExample(@NonNull NonNullExample.Person person) {
        if (person == null) {
            throw new NullPointerException("person is marked @NonNull but is null");
        } else {
            this.person = person;
        }
    }

    class Person {
        private String name;
        private Integer age;

        Person(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
    }
}

@Cleanup

该注解可以进行资源自动管理,在作用域结束时进行资源回收。当一个局部变量被@Cleanup进行修饰时,整个变量的作用域范围会被try/finally 代码块进行包裹,在finally中调用资源回收的close方法(默认为close())。这里引用官网的例子来说明:

import lombok.Cleanup;
import java.io.*;

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

编译后的代码显示如下:


import java.io.*;

public class CleanupExample {
  public static void main(String[] args) throws IOException {
    InputStream in = new FileInputStream(args[0]);
    try {
      OutputStream out = new FileOutputStream(args[1]);
      try {
        byte[] b = new byte[10000];
        while (true) {
          int r = in.read(b);
          if (r == -1) break;
          out.write(b, 0, r);
        }
      } finally {
        if (out != null) {
          out.close();
        }
      }
    } finally {
      if (in != null) {
        in.close();
      }
    }
  }
}

当然,如果某个变量类型没有close方法,而有其他的无参(只有无参的才能用户@Cleanup进行修饰,有参的不能)的资源回收的方法,可以用以下的方式进行申明变量(官网案例):

@Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);

@Getter/@Setter

这两个注解可以用于修饰成员变量,也可以用于修饰类,会自动生成标准javabean的getter和setter方法。生成的getter和setter方法的public域,这个是可以控制的。示例如下:

import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;

public class GeterSeterExample { 
   

    @Getter@Setter private String name;

    @Getter(value = AccessLevel.PROTECTED)
    @Setter(value = AccessLevel.PROTECTED)
    private String size;
}

@ToString

控制重载toString方法。

@EqualsAndHashCode

生成equals和hashCode函数。

@NoArgsConstructor, @AllArgsConstructor

生成无参构造函数和全参构造函数。示例如下:

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
public class ConstructExample { 
   
    private String name;
    private String dec;
}
public class ConstructExample {
    private String name;
    private String dec;

    public ConstructExample() {
    }

    public ConstructExample(String name, String dec) {
        this.name = name;
        this.dec = dec;
    }
}

@Data

包含如下功能,是一种简写方式。
@ToString,@EqualsAndHashCode,@Getter,@Setter,@RequiredArgsConstructor

@Builder

生成创建对象的builder方法api,示例如下:

import lombok.Builder;

@Builder
public class BuilderExample { 
   
    private String name;
    private String dec;
}

编译后的代码如下:

public class BuilderExample {
    private String name;
    private String dec;

    BuilderExample(String name, String dec) {
        this.name = name;
        this.dec = dec;
    }

    public static BuilderExample.BuilderExampleBuilder builder() {
        return new BuilderExample.BuilderExampleBuilder();
    }

    public static class BuilderExampleBuilder {
        private String name;
        private String dec;

        BuilderExampleBuilder() {
        }

        public BuilderExample.BuilderExampleBuilder name(String name) {
            this.name = name;
            return this;
        }

        public BuilderExample.BuilderExampleBuilder dec(String dec) {
            this.dec = dec;
            return this;
        }

        public BuilderExample build() {
            return new BuilderExample(this.name, this.dec);
        }

        public String toString() {
            return "BuilderExample.BuilderExampleBuilder(name=" + this.name + ", dec=" + this.dec + ")";
        }
    }
}

@Synchronized

安全的加锁,控制同步。引用官网的例子,如下所示:

import lombok.Synchronized;

public class SynchronizedExample { 
   
  private final Object readLock = new Object();

  @Synchronized
  public static void hello() {
    System.out.println("world");
  }

  @Synchronized
  public int answerToLife() {
    return 42;
  }

  @Synchronized("readLock")
  public void foo() {
    System.out.println("bar");
  }
}
public class SynchronizedExample { 
   
  private static final Object $LOCK = new Object[0];
  private final Object $lock = new Object[0];
  private final Object readLock = new Object();

  public static void hello() {
    synchronized($LOCK) {
      System.out.println("world");
    }
  }

  public int answerToLife() {
    synchronized($lock) {
      return 42;
    }
  }

  public void foo() {
    synchronized(readLock) {
      System.out.println("bar");
    }
  }
}

@Log

log注解是用于使用log日志输出的,其包含@Log、@Log4j、@Log4j2、@Slf4j等等。这里以@Slf4j为例,如下:

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class LogExample {
  public static void main(String... args) {
    log.info("log info");
  }
}

@Slf4j注解会自动帮我们生成如下代码:

  private static final Logger log =LoggerFactory.getLogger(LogExample.class);

谏言

这篇文档并没有介绍全部的特性,如果想了解更多或者对以上的特性进行更深入的了解,请浏览 官方文档

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195959.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月7日 上午7:22
下一篇 2025年10月7日 上午8:01


相关推荐

  • Java 注释

    Java 注释(一)注释的重要性  编写程序的时候,总需要为程序添加一些注释,用以说明某段代码的作用,或者说明某个类的用途,某个方法的工能,以及该方法的的参数和返回值的数据类型以及意义等  程序注释的作用非常大,很多初学者在刚刚学习java程序的时候,会很努力的写程序,不太会注意添加注释。认为添加注释是一种浪费时间,没有意义的事情。经过一段时间的学习,注意到程序书写的不足,需要重构。于是打开源码…

    2022年7月7日
    17
  • PV操作——生产者和消费者

    PV操作——生产者和消费者

    2022年1月15日
    65
  • 16天记住7000单词_百度网盘7天

    16天记住7000单词_百度网盘7天16天7000(第一天)必备 1.WithmyownearsIclearlyheardtheheartbeatofthenuclearbomb. 我亲耳清楚地听到原子弹的心脏的跳动。 2.Nextyearthebeardedbearwillbearadearbabyintherear. 明年,长胡子的熊将在后方产一头可爱的小崽. 3.Earl…

    2022年8月24日
    13
  • IOCTL函数用法

    IOCTL函数用法ioctl 的实现 nbsp 一 ioctl 的简介 虽然在文件操作结构体 structfile operations 中有很多对应的设备操作函数 但是有些命令是实在找不到对应的操作函数 如 CD ROM 的驱动 想要一个弹出光驱的操作 这种操作并不是所有的字符设备都需要的 所以文件操作结构体也不会有对应的函数操作 nbsp 出于这样的原因 ioctl 就有它的用处了 一些没办法归类的函

    2026年3月19日
    3
  • macpro录屏快捷键_mac屏幕录制设置

    macpro录屏快捷键_mac屏幕录制设置在视频内容越来越丰富的今天,录屏是我们经常会用到的一个功能,不管是录制一些无法下载的视频还是录制屏幕制作自己的视频,都需要用到录屏功能,本文中我们来推荐几款好用的Mac录屏软件Mac系统自带的录屏工具虽然我们可能天天都在使用Mac系统,但是可能很多人都不知道,其实Mac已经自带了一个好用的截图和录屏工具,你可以随时使用Command+Shift+5快捷键调出Mac自带的录屏功…

    2026年3月10日
    3
  • word-embedding_open compound word

    word-embedding_open compound wordWordEmbedding之CBOWCBOW模型结构准备文字数字化构建损失函数基于RNN的方法基于CBOW的方法CBOWCBOW是一个非常优秀的WordEmbedding模型,其原理非常简单,本文章尝试深入模型内部,探索这个模型的性能和表现。模型结构准备再介绍模型的网络结构之前,首先要介绍的是一个向量计算。假定特征为,x=(x0,x1,⋯&amp;amp;amp;amp;amp;ThinSpace;,xn−1…

    2025年9月4日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号