Spec-Zone.ru › Kotlin 2

ExpectRefinement

kotlin-stdlib/kotlin.experimental/ExpectRefinement

Начиная с Kotlin: 2.2

@Target(allowedTargets = [AnnotationTarget.CLASS])
@ExperimentalMultiplatform
annotation class ExpectRefinement

Помеченное объявление expect уточняет объявление expect из ближайшего транзитивного dependsOn исходного набора. Помеченное объявление называется уточнением. Аннотацию можно ставить только на объявления expect верхнего уровня.

Пара объявления expect и объявления-уточнения должна подчиняться тем же правилам, что и пара обычных объявлений expect и actual. Однако объявление expect-уточнение не должно иметь тела. Эти правила проверяются компилятором.

Пример:

// SOURCE SET: common
expect class PlatformSpecific {
fun availableOnAllPlatforms()
}

// SOURCE SET: native (dependsOn: common)
@ExpectRefinement
expect class PlatformSpecific { // `PlatformSpecific` in native source set refines `PlatformSpecific` in common source set
fun availableOnAllPlatforms() // The declarations from the original expect declaration must be repeated
fun availableOnlyOnNativePlatforms() // Add a new member
}

// SOURCE SET: linux (dependsOn: native)
actual class PlatformSpecific {
actual fun availableOnAllPlatforms() {}
actual fun availableOnlyOnNativePlatforms() {}
}

Объявление-уточнение может быть дополнительно уточнено другими уточнениями, образуя цепочку объявлений-уточнений expect. Цепочка всегда должна завершаться объявлением actual.

Допускается наличие нескольких зависимостей dependsOn. Связь dependsOn образует граф, а не дерево. Поэтому уточнение должно уточнять ровно одно объявление expect. То же относится к объявлениям actual. Объявление actual должно реализовывать ровно одно объявление expect.

Гарантии стабильности

Функция экспериментальная. Гарантии стабильности не предоставляются.

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.experimental/-expect-refinement/index.html

Spec-Zone.ru

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