728x90
Lombok을 사용한 JAVA 코드
@EqualsAndHashCode
@ToString
public class Hero {
@Getter
@Setter
private String name;
@Getter
@Setter
private int age;
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public static void main(String[] args) {
/*
Hero hero = new Hero();
hero.setName("아이언맨");
hero.setAge(53);
hero.setAddress("스타크타워");
*/
}
}
Kotlin 코드에서 사용
fun main() {
//롬복이 만들어준 getter/setter가 동작이 안된다.
//코틀린 컴파일러가 컴파일이후 어노테이션 프로세싱이 동작하기 떄문에 사용시 오류가 발생하는 것이다.
val hero = Hero()
hero.name = "아이언맨"
println(hero.name)
}

- JAVA에서는 Lombok을 사용하면 쉽게 getter/setter, toString, equals, hashCode 함수를 만들 수 있다
- Lombok을 통해서 작성한 JAVA코드를 코틀린에서 사용할 때, 오류가 발생한다.
- 직접 작성한 getter/setter는 사용이 가능하다.
- 코틀린이 컴파일이 된 이후 애노테이션 프로세싱(컴파일 타임에 애노테이션을 읽어서 동적 코드 생성, 변경)이 동작하기 때문에 기본적으로 Lombok을 사용할 수 없다
- 최근에는 롬복 플러그인을 사용해 이 문제를 해결할 수 있다.
이슈 해결 방법
1. IDE의 자동 생성 방법 이용
public class Hero {
private String name;
private int age;
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Hero hero = (Hero) o;
return age == hero.age && Objects.equals(name, hero.name) && Objects.equals(
address, hero.address);
}
@Override
public int hashCode() {
return Objects.hash(name, age, address);
}
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;
}
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public static void main(String[] args) {
/*
Hero hero = new Hero();
hero.setName("아이언맨");
hero.setAge(53);
hero.setAddress("스타크타워");
*/
}
}
- Lombok을 제거하고 IDE생성 기능을 이용한다.
2. 코틀린의 data 클래스로 마이그레이션
data class HeroKt(
val name: String,
val age: Int,
val address: String
) {
}
- Lombok이 적용된 클래스는 대부분 data 관련 클래스이다.
- 코틀린의 data class를 적용하면, toString, equals, hashCode 와 같이 기본적인 기능을 제공한다.
728x90
'실무 프로젝트로 배우는 Kotlin & Spring > JAVA 프로젝트에 코틀린 도입하기' 카테고리의 다른 글
| JAVA 기반 스프링 프로젝트에 코틀린 적용 (0) | 2022.11.05 |
|---|---|
| JAVA에서 확장함수 사용하기 (0) | 2022.11.04 |
| JvmStatic을 이용해 정적 함수 호출하기 (0) | 2022.10.23 |
| Kotlin의 예외처리와 JAVA 예약어 접근 방법 (0) | 2022.10.23 |
| Getter, Setter 호출하기 (0) | 2022.10.23 |