Trong bài viết này, mình sẽ giới thiệu với các bạn cách sử dụng Project Lombok để generate các phương thức Setter, Getter và constructor trong một đối tượng Java một cách tự động.
Đầu tiên, mình sẽ tạo một Maven project để làm ví dụ:
với Project Lombok dependency như sau:
1 2 3 4 5 6 |
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <scope>provided</scope> </dependency> |
Các bạn hãy nhớ là chúng ta cần phải install Project Lombok plugin vào trong IDE của chúng ta để IDE có thể hiểu và không bị lỗi compile. Xem hướng dẫn cài đặt Project Lombok plugin trong IntelliJ IDE ở đây nhé các bạn!
Bây giờ, ví dụ mình có class Student với một số thông tin như sau: name, code, dateOfBirth. Nếu không sử dụng Project Lombok thì mình phải khai báo các thông tin này như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package com.huongdanjava.lombok; import java.util.Date; public class Student { private String name; private String code; private Date dateOfBirth; public Student(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public Date getDateOfBirth() { return dateOfBirth; } public void setDateOfBirth(Date dateOfBirth) { this.dateOfBirth = dateOfBirth; } } |
Với Project Lombok, mình có thể remove các phương thức Getter, Setter trong Student class và để cho Project Lombok tự generate chúng bằng cách sử dụng annotation @Getter và @Setter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package com.huongdanjava.lombok; import lombok.Getter; import lombok.Setter; import java.util.Date; @Getter @Setter public class Student { private String name; private String code; private Date dateOfBirth; public Student(String name) { this.name = name; } } |
và thêm một default constructor, một constructor với tất cả các thông tin của class Student bằng cách sử dụng các annotation @NoArgsConstructor và @AllArgsConstructor như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com.huongdanjava.lombok; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.util.Date; @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class Student { private String name; private String code; private Date dateOfBirth; public Student(String name) { this.name = name; } } |
Bây giờ, các bạn có thể sử dụng Student class với các phương thức Getter, Setter và constructor mà chúng ta đã định nghĩa với Project Lombok.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 |
package com.huongdanjava.lombok; public class Example { public static void main(String[] args) { Student student = new Student(null, null, null); student.setName("Khanh"); System.out.println(student.getName()); } } |
Kết quả:
Chúng ta còn có thể khai báo Getter, Setter cho chỉ một số thuộc tính của đối tượng Java sử dụng @Getter, @Setter annotation. Ví dụ như, bây giờ mình chỉ khai báo Getter, Setter cho thuộc tính code của Student class, mình sẽ khai báo như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package com.huongdanjava.lombok; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.util.Date; @NoArgsConstructor @AllArgsConstructor public class Student { private String name; @Getter @Setter private String code; private Date dateOfBirth; public Student(String name) { this.name = name; } } |
Bây giờ, các bạn chỉ có thể sử dụng Getter, Setter cho thuộc tính code của đối tượng Student mà thôi:
Tiin
Vậy làm như thế nào để mình có thể đặt debug được a
Khanh Nguyen
Đặt debug ở đâu vậy bạn? Trong các phương thức Getter, Setter hả?
k11-haui
nhìn n ngắn họn hơn nhiều mà nên dùng chứ
Captain America
Hi anh, e không gọi dduocj hàm get và set khi sử dụng thư viên Lombok, em dùng eclipse
Khanh Nguyen
Em cần cài plugin của Lombok cho Eclipse em nhé!
longpham
em cũng dùng thử mà nó không tự generate ra
không compile dc
Khanh Nguyen
Em dùng với IDE nào?
Nhatdo
A Khanh. Cái Project Lombok này nghe thì hay. Nhưng trong IDE hỗ trợ Insert hết những đoạn code getter hay setter rồi. Vậy mình có cần hay nên dùng Project Lombok này không a.
Khanh Nguyen
Nên dùng em. Code sẽ nhanh hơn nhiều, mà mình không cần thiết phải khai báo quá nhiều code Setter, Getter nữa.