优秀的编程知识分享平台

网站首页 > 技术文章 正文

从 lombok val 到jdk var(load java)

nanyue 2024-08-15 07:57:43 技术文章 6 ℃

今天 看项目代码 发现有个变量定义:

val v = ...

这是什么鬼?怎么还这么定义了?火速查下 :

原来该定义来自Lombok,Lombok 中可以定义两种变量 val var

**Lombok.val** 官方文档介绍大致如下:

val 是用于声明局部变量的,他会根据初始化的表达式来对变量类型进行探测,使用val 的局部变量会被声明为final的,不可用于成员变量,并且他的初始化表达式是必须的(final)

public class VarTest {

  public static void main(final String[] args) {

    val map = new HashMap<String, String>(16);

    map.put("1","apple");
    map.put("2","pear");
    map.put("3","banana");

    for (val  Entry : map.entrySet()) {
      System.out.println("the fruit name :" + Entry.getValue());
    }

  }
}

其实 val 就是一种语法糖,反编译之后可以看到真实的类型了。

lombok.var 官方文档介绍大概意思:

var 跟 val 很像,只不过他标记的局部变量并不是final 的。

二、Java中的var关键字

首先,var关键字是 jdk 10 以后出现的,var关键字跟上面提到的lombok.val lombok.var 是 一样的,也是用于局部变量类型的推断,var 修饰的变量是非final的,如果需要可以加上final修饰。

这里就不做代码测试了,自己安装了 jdk10 的可以自行测试下。

这里 说下 自己对这个 变量定义使用的个人观点:

使用 lombok 定义的不建议使用,你自己使用了,别人就必须引入 lombok 使用,否则代码编译报错。给人一种极其不舒服的感觉。除非所在公司有过代码开发规范的统一,否则 真不建议 做强人所难的事情。

关于jdk10 自带的 var 变量定义模式,如果项目的版本 已经jdk10级别了,那就大胆用吧。



Tags:

最近发表
标签列表