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 –