알아보자.
Lombok은 불필요한 코드와 작업을 줄여주는 좋은 라이브러리지만, 무분별하게 사용하면 코드를 분석하는 입장에서는 혼동이 올지도 모른다.
아래는 생성자를 자동 생성해주는 어노테이션 종류이다.
@NoArgsConstructor 어노테이션은 파라미터가 없는 디폴트 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스에 명시적으로 선언된 생성자가 없더라도 인스턴스를 생성할 수 있다.
물론 안 써도 자동으로 생성해주긴 한다.
생성하는 이유는 생성자에서 설명했다.
@NoArgsConstructor
public class Person {
private String name;
private int age;
// getters and setters
}
NoArgsConstructor 사용하면 Java 코드는 다음과 같아진다.
public class Person {
private String name;
private int age;
public Person(){}
}
@AllArgsConstructor 어노테이션은 클래스의 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스의 모든 필드를 한 번에 초기화할 수 있다.
@AllArgsConstructor
public class Person {
private String name;
private int age;
// getters and setters
}
AllArgsConstructor 사용하면 Java 코드는 다음과 같아진다.
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
@RequiredArgsConstructor 어노테이션은 final이나 @NonNull으로 선언된 필드만을 파라미터로 받는 생성자를 자동으로 생성한다. 이 어노테이션을 사용하면, 클래스가 의존하는 필드를 간단하게 초기화할 수 있다.
@RequiredArgsConstructor
public class Person {
private final String name;
private final int age;
private String address;
// getters and setters
}
RequiredArgsConstructor 사용하면 Java 코드는 다음과 같아진다.
public class Person {
private final String name;
private final int age;
private String address;
public Person(final String name, final int age) {
this.name = name;
this.age = age;
}
}