Spec-Zone.ru › Kotlin 1.6

JvmDefault

kotlin-stdlib / kotlin.jvm / JvmDefault
Требования к платформе и версии: JVM (1.2)
@Target([AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY]) annotation class JvmDefault
Устаревшее: Переключитесь на новые режимы -Xjvm-default: `all` или `all-compatibility`

Указывает, что для неабстрактного члена интерфейса 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 исключены из делегирования интерфейса.

Конструкторы

Требования к платформе и версии: JVM (1.0)

<init>

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

JvmDefault()

Расширяемые свойства

Требования к платформе и версии: JVM (1.0)

annotationClass

Возвращает экземпляр KClass, соответствующий типу аннотации этой аннотации.

val <T : Annotation> T.annotationClass: KClass<out T>

© 2010–2022 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/index.html

Spec-Zone.ru

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