YTCW

java lombok 본문

java

java lombok

YTCW 2024. 9. 10. 16:08

 

  • 코드의 간결성:
    • 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