【发布时间】:2017-07-31 18:50:29
【问题描述】:
Lombok.val 允许您
使用 val 作为局部变量声明的类型,而不是 实际写类型。当你这样做时,类型将从初始化表达式中推断出来。局部变量也将成为最终变量。
所以不是
final ArrayList<String> example = new ArrayList<String>();
你可以写
val example = new ArrayList<String>();
我尝试对它的实际工作原理进行一些研究,但似乎没有大量信息。查看the github page,可以看到val是一个注解类型。然后使用注释type,而不是实际的注释。
我什至不知道您甚至可以以这种方式使用注释类型,但在测试后,以下代码确实有效。但是,我仍然不确定您为什么要以这种方式使用该类型。
public class Main
{
public @interface Foo { }
public static void main(String... args)
{
Foo bar;
System.out.println("End");
}
}
如果这些用法不是注解,而是注解types,Lombok 如何处理这些用法?根据我(显然不正确)的理解,语法应该更像:
@Val foo = new ArrayList<String>();
(我知道注释的约束意味着上述语法无效)
【问题讨论】:
标签: java annotations lombok