JAVA

최신 JDK 21과 Kotlin 1.9.22 조합에서 발견된 오류 및 주의 사항

lahuman 2024. 7. 12. 17:30
728x90

최신 JDK 21과 Kotlin 1.9.22 조합을 사용하면서 몇 가지 오류와 주의 사항을 발견했습니다.

  1. 불변 컬렉션에서 addFirst와 addLast 사용 가능

놀랍게도, 불변 컬렉션인 List에 addFirst와 addLast 메서드를 사용할 수 있습니다. 예를 들어, 다음 코드는 오류 없이 실행됩니다.

fun foo(x: List<String>) {
    x.add("") // 예상대로 오류
    x.addFirst("") // 허용됨
}

이는 기존 Kotlin 버전과 다른 동작이며, 명확한 문서화가 이루어지지 않아 혼란을 야기할 수 있습니다.

  1. null 허용 처리

null 값을 처리할 때 주의가 필요합니다. null 허용되지 않은 상황에서 addFirst와 addLast 메서드는 null 값을 허용합니다.

val mySet = kotlin.collections.LinkedHashSet<String>()
mySet.addFirst(null) // 허용됨
mySet.addLast(null) // 허용됨
//mySet.add(null) // null can not be a value of a non-null type String

val myMap = kotlin.collections.LinkedHashMap<Int, String>()
myMap.putFirst(0, null)
myMap.putLast(1, null)
//myMap[2] = null // null can not be a value of a non-null type TypeVariable(V)

이는 jdk 21에서 신규 메소드를 kotlin 처리 과정에서 생긴 문제로 보이며, Kotlin 2.0.0 이상에서 해결될 것으로 예상됩니다.

  1. Kotlin 2.0.0 이상에서 확인 필요

현재 발견된 오류들은 Kotlin 1.9.22, 1.9.23 등 버전에서만 발생하는 것으로 확인되었습니다. Kotlin 2.0.0-RC 이상 버전에서는 해결될 가능성이 높으므로, 업그레이드 후 다시 확인하는 것이 좋습니다.

  1. 결론

JDK 21과 Kotlin 조합을 사용할 때는 위의 오류와 주의 사항을 인지하고, Kotlin 2.0.0 이상 버전으로 업그레이드를 고려하는 것이 좋습니다. 또한, Kotlin 공식 문서 및 버그 추적 시스템을 통해 최신 정보를 확인하는 것이 중요합니다.

참고자료

728x90