Mục lục
Các method thông dụng như getter, setter đều được project Lombok hỗ trợ để tự generate ra, trong bài viết này chúng ta can thiệp vào quá trình sinh code cho getter, setter thông qua @Accessors annotation.
Default Getter, Setter
Mặc định getter, setter method sẽ được generate theo chuẩn với tiền tố là get, set; tiếp đến là tên của thuộc tính in hoa chữ đầu. Ví dụ
import lombok.Getter; import lombok.Setter; @Getter @Setter public class User { private String firstName; private String lastName; private int age; } class Main { public static void main(String[] agrs) { User user = new User(); user.setAge(19); user.setFirstName("first name"); user.setLastName("last name"); System.out.println(user.getFirstName()); System.out.println(user.getLastName()); System.out.println(user.getAge()); } }
@Accessors
@Accessors annotation được sử dụng để tùy biến cách lombok generate getter và setter method với 3 option:
- fluent
- chain
- prefix
Fluent Accessor
Sử dụng fluent option theo cú pháp sau:
@Accessors(fluent = true)
Khi fluent option là true lombok sẽ loại bỏ tiền tố get, set cho getter và setter method.
import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @Getter @Setter @Accessors(fluent = true) public class User { private String firstName; private String lastName; private int age; } class Main { public static void main(String[] agrs) { User user = new User(); user.age(19); user.firstName("first name"); user.lastName("last name"); System.out.println(user.firstName()); System.out.println(user.lastName()); System.out.println(user.age()); } }
Chained Accessors
Sử dụng chain option theo cú pháp sau:
@Accessors(chain = true)
Oprion chain được bật sẽ khiến setter method trả về this thay vì void. Cách này khá giống với Builder pattern, chúng ta có thể gán giá trị cho các thuộc tính liên tiếp trong cùng một mệnh đề.
import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @Getter @Setter @Accessors(fluent = true, chain = true) public class User { private String firstName; private String lastName; private int age; } class Main { public static void main(String[] agrs) { User user = new User(); user.lastName("last name") .firstName("first name") .age(19); System.out.println(user.firstName()); System.out.println(user.lastName()); System.out.println(user.age()); } }
Prefix Accessors
Cuối cùng, đôi khi các thuộc tính được đặt tên không theo chuẩn và chúng ta muốn, sử dụng prefix option để tạo tên cho getter, và setter method có ý nghĩa hơn. Ví dụ
public class PrefixedAccount { private String sName; private BigDecimal bdBalance; }
Khi thêm @Getter và @Setter annotation chúng ta sẽ được getSName(), getBdBalance(), setSName(), setBdBlance() tạo cảm thấy khó hiểu khi đọc những method có tên như vậy.
Prefix option cho phép bỏ qua các chuỗi bắt đầu bằng prefix liệt kê trong mảng string tự định nghĩa. Ví dụ mình muốn bỏ ký tự s trong sName và bd trong bdBalance khi lombok generate ra getter, setter method. Các thuộc tính bắt buộc phải khớp với prefix của một trong số prefix trong mảng, nếu không sẽ không được khởi tạo getter, setter method. Lưu nó khi khớp với một prefix thì ký tự tiếp theo phải là ký tự in hoa, ví dụ prefix = f thì fName thõa, nhưng fname thì không.
@Accessors(prefix = {"s", "bd"}) @Getter @Setter class PrefixedAccount { private String sName; private BigDecimal bdBalance; } class Main { public static void main(String[] agrs) { PrefixedAccount account = new PrefixedAccount(); account.setName("Prefixed Fields"); account.setBalance(BigDecimal.TEN); System.out.println(account.getName()); System.out.println(account.getBalance()); } }
Configuration Properties
Chúng ta có thế cấu hình Accessors cho từng thư mục hoặc cho cả project bằng cách thêm tạo file lombok.config trong thư mục hoặc project tương ứng
lombok.accessors.chain=true lombok.accessors.fluent=true
Các bạn có thể xem thêm tại Lombok configuration để tìm hiểu chi tiết.
Tóm lược
Trong bài viết này chúng ta đã tìm hiểu cách custom getter, setter method phù hợp với sở thích của mỗi người hoặc tạo style riêng cho project.
Nguồn tham khảo