Lombok.val实际上是如何运作的?
2022-09-01 22:44:15
使用 val 作为局部变量声明的类型,而不是实际编写类型。执行此操作时,将从初始值设定项表达式推断出类型。局部变量也将变为最终变量。
所以不是
final ArrayList<String> example = new ArrayList<String>();
你可以写
val example = new ArrayList<String>();
我试图对此进行一些研究,以了解其实际工作原理,但似乎没有大量信息。查看github页面,我可以看到这是一种注释类型。然后使用批注类型,而不是实际的批注。val
我甚至不知道你甚至可以以这种方式使用注释类型,但是在测试它时,下面的代码确实是有效的。但是,我仍然不确定为什么你会想要以这种方式使用这种类型。
public class Main
{
public @interface Foo { }
public static void main(String... args)
{
Foo bar;
System.out.println("End");
}
}
如果龙目岛不是注释,而是注释类型,如何处理这些用法?根据我(显然不正确)的理解,语法应该看起来更像:
@Val foo = new ArrayList<String>();
(我知道注释的约束意味着上述语法无效)