인수를 올바른 선언으로 해결하기 위해 명시적 형 변환이 필요한 경우 오버로드된 함수 호출을 보고합니다. 현재 컴파일러 경고(Kotlin1.6.20 이후 사용 가능)는 Kotlin 1.8에서 오류가 됩니다.
수열 및 범위 타입(kotlin.ranges)은 Kotlin 1.9 이상에서 Collection 인터페이스를 구현합니다. 이 업데이트로 인해 오버로드된 함수에 대한 해결이 달라집니다. 예를 들어, 아래의 예시에서 test(1..5)는 Kotlin 1.8 이전에서 test(t: Any)로 해결되고 Kotlin 1.9 이상에서는 test(t: Collection<*>)으로 해결됩니다.
fun test(t: Any) { }
fun test(t: Collection<*>) { }
fun invoke() {
test(1..5) // 1.9에서는 IntRange가 Collection이 됩니다
}
제공된 빠른 수정은 버전 1.8 이전 버전의 컴파일러에 한정된 동작을 캡처합니다.
fun test(t: Any) { }
fun test(t: Collection<*>) { }
fun invoke() {
test(1..5) // Kotlin 1.9 전에는 'test(t: T)'로 해결되었습니다
}
빠른 수정을 적용한 후:
fun test(t: Any) { }
fun test(t: Collection<*>) { }
fun invoke() {
test((1..5) as Iterable<Int>) // Kotlin 1.9에서는 'test(t: T)'로 해결됩니다
}
검사는 Kotlin 언어 수준 1.6부터 이용할 수 있습니다.