SubclassOptInRequired
@Target([AnnotationTarget.CLASS]) annotation class SubclassOptInRequired
Аннотация, которая отмечает открытые для наследования классы и интерфейсы и делает реализацию и расширение таких объявлений требующими явного opt-in.
При применении любая попытка наследования целевого объявления вызовет opt-in с соответствующим уровнем и сообщением.
Предполагаемые случаи использования маркеров opt-in для наследования включают, но не ограничиваются следующими API:
- Стабильные в использовании, но нестабильные в реализации из-за дальнейшей эволюции.
- Стабильные в использовании, но закрытые для реализаций третьих сторон по внутренним или техническим причинам.
- Стабильные в использовании, но сложные или хрупкие в реализации.
- Стабильные в использовании, но с контрактом, который может быть ослаблен в будущем несовместимым образом для внешних реализаций.
В отличие от обычной аннотации RequiresOptIn, существует три способа opt-in для требования наследования:
- Отметить объявление маркерной аннотацией, сделав её распространяющейся.
- Отметить объявление аннотацией OptIn, чтобы получить opt-in для предоставленных гарантий не распространяющимся способом.
- Отметить объявление аннотацией 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