2011-11-03 67 views
80

Tôi muốn sử dụng lớp dữ liệu ở Lombok. Vì nó có khoảng một chục trường, tôi chú thích nó với @Data để tạo ra tất cả các setters và getter. Tuy nhiên có một lĩnh vực đặc biệt mà tôi không muốn người truy cập được triển khai.Bỏ qua một Setter/Getter ở Lombok

Lombok bỏ qua trường này như thế nào?

Trả lời

162

Bạn có thể chuyển cấp truy cập vào các chú thích @Getter@Setter. Điều này rất hữu ích để làm cho getters hoặc setters được bảo vệ hoặc riêng tư. Nó cũng có thể được sử dụng để ghi đè lên mặc định.

Với @Data, bạn có quyền truy cập công khai vào trình truy cập theo mặc định. Bây giờ bạn có thể sử dụng cấp độ truy cập đặc biệt NONE để hoàn toàn bỏ qua các accessor, như thế này:

@Getter(AccessLevel.NONE) 
@Setter(AccessLevel.NONE) 
private int mySecret; 
+0

Hoàn hảo. Nếu trường riêng là một POJO và cũng được chú thích bằng @Delegate(), nó có thể được sử dụng để trích xuất một tập hợp các thuộc tính thành một lớp có thể tái sử dụng riêng biệt. Điều này có thể hữu ích khi có cùng một tập hợp các thuộc tính được áp dụng cho nhiều lớp (một loại mixin để thêm các thuộc tính). Ví dụ, một mixin đại diện cho một tập các thuộc tính có thể áp dụng cho mô hình hóa các phần tử XML khác nhau. – xorcus

20

Theo @Data description bạn có thể sử dụng:

Tất cả thu khí được tạo ra và setters sẽ được công khai. Để ghi đè cấp truy cập , hãy chú thích trường hoặc lớp học với @Setter và/hoặc chú thích @Getter rõ ràng hơn. Bạn cũng có thể sử dụng chú thích này (bằng cách kết hợp chú thích đó với AccessLevel.NONE) để chặn tạo một bộ thu thập và/hoặc hoàn toàn setter.