SubclassOptInRequired
@Target([AnnotationTarget.CLASS]) annotation class SubclassOptInRequired
Аннотация, которая помечает классы и интерфейсы как открытые для наследования, а реализацию и расширение таких деклараций делает требующими явного opt-in.
При применении любая попытка наследования целевой декларации вызовет opt-in с соответствующим уровнем и сообщением.
Предполагаемое использование маркеров opt-in для наследования включает, но не ограничивается следующими API:
- Стабильное для использования, но нестабильное для реализации из-за дальнейшей эволюции.
- Стабильное для использования, но закрытое для реализации третьими сторонами по внутренним или техническим причинам.
- Стабильное для использования, но сложное или хрупкое в реализации.
- Стабильное для использования, но с контрактом, который может быть ослаблен в будущем несовместимым образом для внешних реализаций.
В отличие от обычной аннотации RequiresOptIn, существует три способа opt-in для требования наследования:
- Помечать декларацию маркерной аннотацией, делая ее распространяющейся.
- Помечать декларацию аннотацией OptIn, чтобы включить предоставленные гарантии нераспространяющимся образом.
- Помечать декларацию аннотацией SubclassOptInRequired с тем же классом маркера, делая ее дальнейшим распространяющейся только для наследования.
Использование этой аннотации ограничено открытыми и абстрактными классами, а также не-fun интерфейсами. Любое другое использование, разрешенное CLASS аннотацией, приводит к ошибке компиляции.
Конструкторы
<init>
Аннотация, которая помечает классы и интерфейсы как открытые для наследования, а реализацию и расширение таких деклараций делает требующими явного opt-in.
SubclassOptInRequired(markerClass: KClass<out Annotation>)
Свойства
markerClass
указывает маркерную аннотацию, которая требует явного opt-in.
val markerClass: KClass<out Annotation>
© 2010–2023 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/-subclass-opt-in-required/index.html