Java Lombok | 값 객체 - @Value
@Value
클래스에 @Value
어노테이션이 선언되면, 다음의 어노테이션들을 모두 선언이 들어간다.
@Getter
@ToString
@EqualsAndHashCode
@AllArgsConstructor
그리고, 클래스 및 각 필드 final
이 되고, 각 필드는 자동으로 접근제어자가 private
이 된다. 이는 DDD 값 객체가 된다.
package com.devkuma.tutorial.lombok;
import lombok.Value;
@Value
public class ValueTutorial {
String string;
int number;
}
위 코드는 @Value
로 인해 아래와 같이 변경된다.
package com.devkuma.tutorial.lombok;
public final class ValueTutorial {
private final String string;
private final int number;
public ValueTutorial(String string, int number) {
this.string = string;
this.number = number;
}
public String getString() {
return this.string;
}
public int getNumber() {
return this.number;
}
public boolean equals(Object o) {
if (o == this) {
return true;
} else if (!(o instanceof ValueTutorial)) {
return false;
} else {
ValueTutorial other = (ValueTutorial)o;
if (this.getNumber() != other.getNumber()) {
return false;
} else {
Object this$string = this.getString();
Object other$string = other.getString();
if (this$string == null) {
if (other$string != null) {
return false;
}
} else if (!this$string.equals(other$string)) {
return false;
}
return true;
}
}
}
public int hashCode() {
int PRIME = true;
int result = 1;
result = result * 59 + this.getNumber();
Object $string = this.getString();
result = result * 59 + ($string == null ? 43 : $string.hashCode());
return result;
}
public String toString() {
String var10000 = this.getString();
return "ValueTutorial(string=" + var10000 + ", number=" + this.getNumber() + ")";
}
}
최종 수정 : 2024-01-18