Notice
Recent Posts
Recent Comments
Link
YTCW
java lombok 본문
- 코드의 간결성:
- Lombok을 사용하지 않으면 코드 길이가 매우 길어집니다. 게터, 세터, toString(), 생성자 등 기본적으로 반복적인 코드를 많이 작성해야 합니다.
- Lombok을 사용하면 2줄의 어노테이션으로 대부분의 반복적인 코드가 자동으로 생성됩니다.
- 메서드 자동 생성:
- Lombok을 사용하지 않으면 직접 작성해야 하는 여러 메서드 (getName(), setName(), toString(), equals(), hashCode(), 생성자 등)가 자동으로 생성되어 코드에서 제거됩니다.
성능 측면:
Lombok은 컴파일 타임에 코드에 추가되므로 런타임 성능에는 영향을 미치지 않습니다. 즉, Lombok을 사용했을 때 컴파일된 바이트코드에는 Lombok이 자동으로 생성한 메서드가 포함되며, 성능은 동일합니다.
Lombok을 사용하면 코드 작성 시간을 줄이고 가독성을 높일 수 있으며, 코드 수정 시에도 편리하게 작업할 수 있습니다. 이를 통해 생산성을 크게 향상시킬 수 있습니다.
package chapter13;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Example {
// 클래스 필드 선언
private String name;
private int age;
public static void main(String[] args) {
// 객체 생성 및 초기화
Example exam1 = new Example(); // NoArgsConstructor를 이용한 기본 생성자
Example exam2 = new Example("이승아", 50); // AllArgsConstructor를 이용한 매개변수 생성자
// 객체 정보 출력
System.out.println(exam1); // toString() 메서드가 자동 생성됨
exam2.setAge(20);
System.out.println(exam2);
}
}
lombok 사용x, 사용o 차이점
1. 사용 x
public class Person {
private String name;
private int age;
// 기본 생성자
public Person() {
}
// 모든 필드를 초기화하는 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 메서드
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// toString 메서드
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
// equals 메서드
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
// hashCode 메서드
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
2. 사용 o
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@Data // @Getter, @Setter, @ToString, @EqualsAndHashCode 자동 생성
@NoArgsConstructor // 기본 생성자 자동 생성
@AllArgsConstructor // 모든 필드를 초기화하는 생성자 자동 생성
public class Person {
private String name;
private int age;
}
'java' 카테고리의 다른 글
java 내부 클래스 (0) | 2024.09.13 |
---|---|
java singleton (0) | 2024.09.10 |
java MVC 패턴 (2) | 2024.09.10 |
java Map (0) | 2024.09.10 |
java Set (0) | 2024.09.10 |