Неразрешенная ссылка: JvmInline На детской площадке Котлина
Это точный фрагмент кода классов значений, взятый с официального сайта kotlin .
interface I
@JvmInline
value class Foo(val i: Int) : I
fun asInline(f: Foo) {}
fun <T> asGeneric(x: T) {}
fun asInterface(i: I) {}
fun asNullable(i: Foo?) {}
fun <T> id(x: T): T = x
fun main() {
val f = Foo(42)
asInline(f) // unboxed: used as Foo itself
asGeneric(f) // boxed: used as generic type T
asInterface(f) // boxed: used as type I
asNullable(f) // boxed: used as Foo?, which is different from Foo
// below, 'f' first is boxed (while being passed to 'id') and then unboxed (when returned from 'id')
// In the end, 'c' contains unboxed representation (just '42'), as 'f'
val c = id(f)
}
Запуск этого на площадке kotlin дает мне эти две противоречивые ошибки:
Неразрешенная ссылка: классы
значений JvmInline без аннотации @JvmInline еще не поддерживаются
Я не знаю, где я ошибся, я просто хотел узнать тип val c в конце этого кода.
1 ответ
После выпуска Kotlin 1.5,
value
классы работают нормально на Kotlin Playground.