Spec-Zone.ru › Kotlin 1.6

<init>

kotlin-stdlib / kotlin.jvm / JvmDefault / <init>
Требования к платформе и версии: JVM (1.0)
JvmDefault()

Указывает, что для неабстрактного члена Kotlin-интерфейса должна быть сгенерирована JVM-метод по умолчанию.

Использование этой аннотации требует явного указания аргумента компиляции: либо -Xjvm-default=enable или -Xjvm-default=compatibility.

  • с -Xjvm-default=enable, генерируется только метод по умолчанию в интерфейсе для каждого метода @JvmDefault. В этом режиме аннотирование существующего метода с @JvmDefault может нарушить двоичную совместимость, потому что это фактически удалит метод из класса DefaultImpls.
  • с -Xjvm-default=compatibility, помимо метода интерфейса по умолчанию, в классе DefaultImpls генерируется совместимый обработчик, который вызывает метод интерфейса по умолчанию через синтетический обработчик. В этом режиме аннотирование существующего метода с @JvmDefault сохраняет двоичную совместимость, но приводит к большему количеству методов в байт-коде.

Удаление этой аннотации из члена интерфейса является бинарно несовместимым изменением в обоих режимах.

Генерация методов по умолчанию возможна только с версией JVM целевого байт-кода 1.8 (-jvm-target 1.8) или выше.

Методы @JvmDefault исключаются из делегирования интерфейса.

© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-default/-init-.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API