Tags:

Cách sử dụng @NoArgsConstructor của Lombok

Việc khởi tạo các constructor mặc định không có tham số đầu vào là một trong những tác vụ chúng ta phải thực thi lặp đi lặp lại. 

Chính vì vậy mà Lombok đã cung cấp một annotation giúp tự sinh các constructor mặc định là @NoArgsConstructor. 

Để sử dụng Lombok trong project Maven, chúng ta phải thêm dependency:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.8</version>
</dependency>

@NoArgsConstructor annotation trong Lombok

@NoArgsConstructor annotation sẽ sinh ra một constructor mặc định không chứa các tham số đầu vào. Mặc định constructor này là public.

Ví dụ với NoArgsDemo1 class sử dụng @NoArgsConstructor

@NoArgsConstructor
public class NoArgsDemo1 {

  private Long id;
  
  private String username;
}

// Code được sinh tương ứng

public class NoArgsDemo1 {
  private Long id;
  private String username;
  public NoArgsDemo1() {
  }
}

@NoArgsConstructor với các thuộc tính static và final

Bạn sẽ bị trình biên dịch báo lỗi khi 1 class chứa thuộc tính final không được khởi tạo, trong trường hợp này, chúng ta có thể gán giá trị cho thuộc tính force=true. Cho phép Lombok khởi tạo các giá trị mặc định cho các final-object là null, final-boolean là false và int là 0. Các thuộc tính static không được khởi tạo bên trong constructor được sinh ra. 

Ví dụ NoArgsDemo2 khi được đánh dấu @NoArgsConstructor(force = true).

@NoArgsConstructor(force = true)
public class NoArgsDemo2 {
  private final Long id;
  
  private final String username;
  
  private final double minSalary;
  
  private final int defaultRole = 1;
  
  private static boolean status;
}

// Code được sinh tương ứng

public class NoArgsDemo2 {
  private final Long id;
  private final String username;
  private final double minSalary;
  private final int defaultRole = 1;
  private static boolean status;
  public NoArgsDemo2() {
    this.id = null;
    this.username = null;
    this.minSalary = 0.0;
  }
}

Tạo private constructor mặc định với @NoArgsConstructor

Mặc định thì constructor được sinh ra bởi @NoArgsConstructorpublic, để làm cho nó trở thành private chúng ta có thể khai báo thêm thuộc tính @NoArgsConstructor(access = AccessLevel.PRIVATE).

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class NoArgsDemo4 {
  private Long id;
  private String username;
}

// Code được sinh tương ứng

public class NoArgsDemo4 {
  private Long id;
  private String username;
  private NoArgsDemo4() {
  }
}

Khởi tạo một static factory method sử dụng @NoArgsConstructor

@NoArgsConstructor(staticName = “getInstance”) sẽ sinh ra một static factory method có tên getInstance.

@NoArgsConstructor(staticName = "getInstance")
public class NoArgsDemo5 {
  private Long id;
  private String username;
}


// Code được sinh tương ứng

public class NoArgsDemo5 {
  private Long id;
  private String username;
  private NoArgsDemo5() {
  }
  public static NoArgsDemo5 getInstance() {
    return new NoArgsDemo5();
  }
}

Tóm lược

Như vậy là mình đã giới thiệu xong một số cách dùng @NoArgsConstructor của Lombok rồi, thường thì mình chỉ sử dụng mặc định thôi chứ cũng ít khi dùng đến static factory, hay private constructor. Thế nhưng cứ hãy tìm hiểu hết đi, biết đâu sau này lại cần dùng.

Nguồn tham thảo

https://javabydeveloper.com/lombok-noargsconstructor-examples/

https://projectlombok.org/features/constructor

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x