Java에서는 자동 형변환을 지원했으며, 강제 형변환도 손쉽게 가능했다. 형변환이 가능하다면 그냥 변수명 앞에 (타입)만 붙여주면 된다.
그렇지만 코틀린은 자동 형변환을 지원하지 않으며, (타입) 과 같은 캐스팅 연산을 지원하지 않는다.
그렇다면 코틀린에서 형변환은 어떻게 해야 할까?
1. 기본 타입 형변환
기본 타입 형변환은 Java와 비슷하게 정의된 함수를 통해 손쉽게 형변환할 수 있다.
xval a: Long = 34
val b: Int = a.toInt() // Long을 Int로 강제 형변환
val str: String = "123"
val c = Integer.parseInt(str) // 정수 123으로 변환
- toByte() : Byte로 변환
- toShort() : Short로 변환
- toInt() : Int로 변환
- toLong() : Long으로 변환
- toFloat() : Float으로 변환
- toDouble() : Double로 변환
- toChar() : Char로 변환
- String의 형변환은 Java와 동일
2. 정의 타입 형변환
업캐스팅이나 다운캐스팅을 하기 위해 강제 형변환을 사용하는 일은 부지기수다. 많이 찾아보진 않았지만, 꼭 찝어 형변환을 다룬 글을 찾지 못 해서 코틀린의 is
에 주목했다.
xxxxxxxxxx
// AAA -> aaa
if(AAA is aaa)
// 처리
위 if문이 참이면 즉, AAA가 aaa로 캐스팅 가능하다면 자동으로 형변환이 된다. 별도의 캐스팅 연산자가 없어도 이렇게 사용하여 강제 형변환이 가능하다.
xxxxxxxxxx
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
var talkViewHolder: TalkViewHolder? = null
if(holder is TalkViewHolder)
talkViewHolder = holder
}
위는 RecyclerView에서의 사용 예시다. 예외처리도 확실히 되어 오히려 기존 연산자를 사용할 때보다 안전해서 좋은 것 같기도 하다.
'Android' 카테고리의 다른 글
[Java][Kotlin] 액티비티 전환하기 (3) | 2018.10.13 |
---|---|
[Java][Kotlin] Fragment 간단 사용법 (3) | 2018.10.13 |
Kotlin(코틀린)을 익혀보자 (0) | 2018.10.12 |
댓글