: is
, !is
class Is (
fun isTypeName(obj: Any) {
if (obj is Int) (
Log.e("Type", "Type = Integer")
} else if (obj is Float) { ... }
: as
class As {
fun asInt(number: Number) {
val int: Int = number as Int
}
}
자바에서 instanceOf 연산자를 사용하여 객체의 자료형을 확인하더라도
이를 변환하기 위해서는 확인했던 자료형으로 다시 캐스팅 한 후에 사용이 가능합니다.
코틀린에서는 이러한 불편함과 간결함을 위해 추론이 가능한 경우
캐스팅 없이 해당하는 자료형으로 객체가 변환되도록 스마트 캐스트 기능을 지원합니다.
*var는 언제든지 값이 변할 수 있는 변수기 때문에 스마트 캐스트가 지원되지 않습니다.
class SmartCast {
fun smartCast(number: Number) {
if (number is Int) {
val a: Int = number //스마트 캐스트가 지원되어서 as 연산자를 거치지 않고 사용할 수 있습니다.
}
}
}
글 잘 봤습니다, 감사합니다.