Lombok.val cho phép bạnLombok.val thực sự hoạt động như thế nào?
val sử dụng như các loại của một khai báo biến cục bộ thay vì thực sự bằng văn bản các loại. Khi bạn làm điều này, loại sẽ được suy ra từ biểu thức khởi tạo. Biến cục bộ cũng sẽ được thực hiện cuối cùng.
Vì vậy, thay vì
final ArrayList<String> example = new ArrayList<String>();
Bạn có thể viết
val example = new ArrayList<String>();
Tôi đã cố gắng để làm một số nghiên cứu về cách thức này thực sự hoạt động nhưng có vẻ không phải là một lượng thông tin khổng lồ. Nhìn vào the github page, tôi có thể thấy rằng val
là một loại chú thích. Chú thích loại sau đó được sử dụng thay vì chú thích thực tế.
Tôi thậm chí không biết bạn thậm chí có thể sử dụng các loại chú thích theo cách này nhưng khi kiểm tra nó, mã sau đây thực sự là hợp lệ. Tuy nhiên, tôi vẫn không chắc tại sao bạn lại muốn sử dụng kiểu này theo cách này.
public class Main
{
public @interface Foo { }
public static void main(String... args)
{
Foo bar;
System.out.println("End");
}
}
Làm thế nào để quá trình Lombok những tập quán nếu họ không chú thích, nhưng chú thích loại? Để (rõ ràng là không chính xác) tôi hiểu, cú pháp sẽ giống như hơn:
@Val foo = new ArrayList<String>();
(Tôi hạn chế nhận thức chú thích có nghĩa là trên không phải là cú pháp hợp lệ)
Cảm ơn! Và cảm ơn vì một thư viện tuyệt vời. Bạn có thể chỉ cho tôi đến nơi trong github mà không thay thế? Tôi quan tâm. – Michael
Đối với Eclipse và ecj, hãy xem https://github.com/rzwitserloot/lombok/blob/master/src/eclipseAgent/lombok/eclipse/agent/PatchVal.java và https://github.com/rzwitserloot/lombok/blob /master/src/eclipseAgent/lombok/eclipse/agent/PatchValEclipse.java, cho javac, xem https://github.com/rzwitserloot/lombok/blob/master/src/core/lombok/javac/handlers/HandleVal.java –