새 클래스를 정의할 때마다 코틀린은 자동으로 널이 될 수 있는 타입과 널이 될 수 없는 타입을 추가해준다.
NullableTypes/Amphibian.kt
package nullabletypes
class Amphibian
enum class Species {
Frog, Toad, Salamander, Caecilian
}
fun main() {
val a1: Amphibian = Amphibian()
val a2: Amphibian? = null
val at1: Species = Species.Toad
val at2: Species? = null
}
예제를 보면 알 수 있듯이, ‘널이 될 수 없는 타입’에 대응하는 ‘널이 될 수 있는 타입’을 정의하기 위해 무언가 특별한 일을 할 필요는 없다. 널이 될 수 없는 타입을 정의하면 널이 될 수 있는 타입도 자동으로 사용할 수 있게 된다.