getter
equals
, hashCode
toString
data class PersonDto(
val name: String,
val age: Int
)
equals
hashCode
toString
getter
도 마찬가지로 가진다.builder
를 쓰는 효과도 나타나기에 사실상 builder
도 포함된다고 볼 수 있다.enum
의 특징
enum class Country (
private val code: String
) {
KOREA("KO"),
AMERICA("US")
;
}
enum
에서 분기 처리가 필요할 때 when
을 사용해 좀 더 읽기 쉬운 코드를 작성할 수 있다.enum
의 모든 타입을 알고 있기에 다른 타입에 대한 로직 즉 else
를 작성하지 않아도 된다.enum
에 변화가 있는데 when
구문을 수정하지 않으면 IDE 단에서 경고를 준다.fun handleCountry(country: Country) {
when (country) {
Country,KOREA -> TODO()
COUNTRY.AMERICA -> TODO()
}
}
enum class Country (
private val code: String
) {
KOREA("KO"),
AMERICA("US")
;
}
Sealed Class
특징
Enum
과 다른 점
sealed class HyundaiCar(
val name: String,
val price: Long
)
class Avante : HyundaiCar("아반떼", 1_000)
class Sonata : HyundaiCar("소나타", 2_000)
class Grandeur : HyundaiCar("그랜저", 3_000)
enum
처럼 분기 처리 시 when
을 사용하면 유용하다.fun main() {
handleCar(Avante())
}
private fun handleCar(car: HyundaiCar) {
when (car) {
is Avante -> TODO()
is Grandeur -> TODO()
is Sonata -> TODO()
}
}