코틀린에서 플랫폼 타입(platform type)은 자바와의 상호 운용성을 위해 사용되는 특수한 타입입니다. 코틀린은 기본적으로 널 안전성을 갖춘 언어이지만, 자바와의 상호 운용성을 고려하여 일부 상황에서는 널 안전성이 보장되지 않는 플랫폼 타입을 사용할 수 있습니다.
플랫폼 타입의 특징
1. 널 안전성이 보장되지 않음
플랫폼 타입은 널 안전성이 보장되지 않습니다. 이는 코틀린 컴파일러가 해당 타입이 널이 될 수도, 되지 않을 수도 있다는 것을 알지 못하기 때문입니다.
2. 자바 타입과의 상호 운용성
플랫폼 타입은 주로 자바 코드와의 상호 운용성을 위해 사용됩니다. 예를 들어, 자바 메서드의 반환 타입이 String!이라면, 코틀린에서는 플랫폼 타입으로 처리됩니다.
플랫폼 타입 사용 예제
fun getJavaString(): String {
// 자바 메서드에서 반환된 String
return JavaInterop.getJavaString()
}
fun main() {
val result: String = getJavaString()
println(result)
}
위의 예제에서 getJavaString 함수는 자바 메서드 JavaInterop.getJavaString()의 결과를 반환합니다. 만약 해당 자바 메서드가 널이 될 수 있는 경우, 반환 타입은 코틀린에서 플랫폼 타입으로 처리됩니다.
안전한 캐스팅을 통한 사용
플랫폼 타입을 안전하게 사용하려면 널 체크 후 안전한 캐스팅을 사용해야 합니다.
fun getJavaString(): String? {
// 자바 메서드에서 반환된 String
return JavaInterop.getJavaString()
}
fun main() {
val result: String? = getJavaString()
if (result != null) {
// 안전한 캐스팅
val length: Int = result.length
println(length)
} else {
println("Result is null")
}
}
여기서 result는 플랫폼 타입인 String?이므로 널 체크 후에 안전한 캐스팅을 통해 안전하게 사용합니다.
플랫폼 타입은 주로 자바 코드와의 상호 운용성을 고려할 때 필요하며, 코틀린 코드 내에서는 널 안전성을 유지하려면 안전한 캐스팅과 널 체크를 주의깊게 사용해야 합니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린/자바 타입 매핑 (0) | 2024.01.07 |
---|---|
코틀린 널 가능성 애너테이션 (0) | 2024.01.06 |
코틀린 합성 프로퍼티 (0) | 2024.01.06 |
코틀린 Unit과 void (0) | 2024.01.06 |
코틀린 자바 메서드와 필드 (0) | 2024.01.06 |