[Kotlin] 타입의 확인과 변환

[원본 링크]

is
is는 자바의 instanceOf에 대응된다.
같거나, 상속관계에 있는 타입만 오른쪽 피연산자로 둘 수 있다. image

image

다른지를 확인하려면 !is를 쓰면 된다. image

image 참고로 Number는 모든 숫자타입의 상위타입이다.


as
상속관계에 있는 타입으로 캐스팅을 해주는 키워드다.
상관없는 타입으론 안되는것같다. image

image


스마트캐스트
캐스팅해서 작업을 할때마다 타입을 is로 확인하고 또 as로 캐스팅하려면 코드도 구질구질해지고 치기도 피곤해질것이다.
스마트캐스트는 이를 위한 기능이다.

if문에서 특정 변수를 is로 확인할때, true로 판정되고 분기문 몸체에 진입한다면 특정변수는 범위 내에서는 확인된 타입으로 자동 캐스팅된 상태로 유지된다.
범위를 벗어나면 캐스팅은 풀린다. image

image

이건 if문뿐만 아니라 when 구문에서도 작동한다. image