Lombok.val让你Lombok.val实际上是如何工作的?
使用VAL作为一个局部变量声明的实际编写类型的类型,而不是 。当你这样做时,类型将从初始化表达式中推断出来。局部变量也将作出最终决定。
所以不是
final ArrayList<String> example = new ArrayList<String>();
你可以写
val example = new ArrayList<String>();
我试着做一些研究到这实际上是如何工作的,但似乎并没有被大量的信息。看看the github page,我可以看到val
是一个注释类型。然后使用注释类型,而不是实际的注释。
我甚至不知道你甚至可以用这种方式使用注释类型,但是在测试它时,下面的代码确实是有效的。但是,我仍然不确定为什么你会想要以这种方式使用该类型。
public class Main
{
public @interface Foo { }
public static void main(String... args)
{
Foo bar;
System.out.println("End");
}
}
如何龙目岛过程中,这些用法,如果他们不注释,但注释类型?我的(显然是不正确)的理解,语法应该更像:
@Val foo = new ArrayList<String>();
(我知道的约束标注的意义上是无效的语法)
谢谢!并感谢一个伟大的图书馆。你能把我指向github的哪个地方做替换吗?我很感兴趣。 – Michael
对于Eclipse和ecj,请参阅https://github.com/rzwitserloot/lombok/blob/master/src/eclipseAgent/lombok/eclipse/agent/PatchVal.java和https://github.com/rzwitserloot/lombok/blob /master/src/eclipseAgent/lombok/eclipse/agent/PatchValEclipse.java,对于javac,请参阅https://github.com/rzwitserloot/lombok/blob/master/src/core/lombok/javac/handlers/HandleVal.java –