lombok的val

简介: lombok的val

满足是发明创造的窒息物——佚名

kt中的val让我用的爱不释手,不用重复定义一个又一个类型,编译器会自动推导

今天遇到一个情况,我们知道把java代码粘贴到kt文件里,idea会自动转换javakt

但反过来将kt代码粘贴到java文件里则不会,原来的val,现在还是val

这时候可以使用lombokvalhttps://projectlombok.org/features/val

例如下面的代码会被编译为合适的类型:

import java.util.ArrayList;
import java.util.HashMap;
import lombok.val;
public class ValExample {
  public String example() {
    val example = new ArrayList<String>();
    example.add("Hello, World!");
    val foo = example.get(0);
    return foo.toLowerCase();
  }
  public void example2() {
    val map = new HashMap<Integer, String>();
    map.put(0, "zero");
    map.put(5, "five");
    for (val entry : map.entrySet()) {
      System.out.printf("%d: %s\n", entry.getKey(), entry.getValue());
    }
  }
}

会被编译成

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class ValExample {
  public String example() {
    final ArrayList<String> example = new ArrayList<String>();
    example.add("Hello, World!");
    final String foo = example.get(0);
    return foo.toLowerCase();
  }
  public void example2() {
    final HashMap<Integer, String> map = new HashMap<Integer, String>();
    map.put(0, "zero");
    map.put(5, "five");
    for (final Map.Entry<Integer, String> entry : map.entrySet()) {
      System.out.printf("%d: %s\n", entry.getKey(), entry.getValue());
    }
  }
}

要注意一个细节,对于复合类型,推断的通常是父类,而不是接口,例如

bool ? new HashSet() : new ArrayList()会被推导为AbstractCollection而不是Serializable

相关文章
|
29天前
|
IDE 安全 Java
Lombok的优缺点不建议使用
Lombok的优缺点不建议使用
20 0
|
4月前
hutool动态编译+lombok
hutool动态编译+lombok
41 1
|
4月前
lombok在生成的构造器、方法及参数上生成注解
lombok在生成的构造器、方法及参数上生成注解
61 0
|
1月前
有关使用Lombok@Builder注解构建对象返回为空
有关使用Lombok@Builder注解构建对象返回为空
24 1
QGS
|
3月前
|
Java 关系型数据库 MySQL
浅学lombok
浅学lombok
QGS
31 1
|
3月前
|
Java API Maven
开发人员必备的常用工具lombok
开发人员必备的常用工具lombok
45 1
|
3月前
|
IDE Java API
Lombok入门使用教程及其优缺点详解
Lombok入门使用教程及其优缺点详解
41 0
|
3月前
|
JSON IDE Java
Java使用Lombok详解
Java使用Lombok详解
|
3月前
|
搜索推荐 Java 编译器
Javac 编译自定义注解及分析 Lombok 的注解实现
Javac 编译自定义注解及分析 Lombok 的注解实现
64 0
|
4月前
|
Java 大数据 Maven
Java基础之一文快速掌握Lombok的使用
Java基础之一文快速掌握Lombok的使用
36 0