계층간의 데이터를 전달하기 위한 DTO(Data Transfer Object)
Java
public class JavaPersonDto {
private final String name;
private final int age;
public JavaPersonDto(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
JavaPersonDto that = (JavaPersonDto) o;
return age == that.age && name.equals(that.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "JavaPersonDto{" +
"name='" + name + '\\'' +
", age=" + age +
'}';
}
}
Kotlin
data class PersonDto(
val name: String,
val age: Int
)
코틀린에서는 클래스 앞에 data 키워드를 붙이면 자동으로 자바의 dto클래스처럼 equals, hashCode, toString 메소드를 만들어준다.
Java
public enum JavaCountry {
KOREA("KO"),
AMERICA("US");
private final String code;
JavaCountry(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
Kotlin
enum class Country(private val code: String) {
KOREA("KO"),
AMERICA("US");
}
코틀린의 when은 Enum Class 혹은 Sealed Class와 함께 사용할 경우 더욱더 진가를 발휘한다.
fun handleCountry(country: Country) {
when (country) {
Country.KOREA -> TODO()
Country.AMERICA -> TODO()
}
}