val
终于来了!轻松搞定 final 局部变量。
val
在 lombok 0.10 中引入。
Lombok 1.18.22 新特性:val
被替换为 final var
。
概述
您可以将 val
用作局部变量声明的类型,而无需实际编写类型。当您这样做时,类型将从初始化表达式中推断出来。局部变量也将被设为 final。此功能仅适用于局部变量和 foreach 循环,不适用于字段。初始化表达式是必需的。
val
实际上是一种“类型”,并且作为 lombok
包中的一个真实类存在。您必须导入它才能使 val 工作(或使用 lombok.val
作为类型)。在局部变量声明中使用此类型会触发添加 final
关键字以及复制初始化表达式的类型,从而覆盖“伪” val
类型。
警告:此功能目前在 NetBeans 中不起作用。
使用 Lombok
import java.util.ArrayList;
|
原生 Java
import java.util.ArrayList;
|
支持的配置键
-
lombok.val.flagUsage
= [warning
|error
] (默认值:未设置) - 如果配置了,Lombok 将标记任何
val
的使用,作为警告或错误。
小字号声明
对于复合类型,推断的是最常见的超类,而不是任何共享接口。例如,bool ? new HashSet() : new ArrayList()
是一个具有复合类型的表达式:结果既是 AbstractCollection
也是 Serializable
。推断的类型将是 AbstractCollection
,因为它是类,而 Serializable
是接口。
在模棱两可的情况下,例如当初始化表达式为 null
时,将推断 java.lang.Object
。