如何在Kotlin中实现多级嵌套的@IntDef注解定义
Kotlin 实现多级嵌套 @IntDef 注解
首先确认你已经引入了 AndroidX 注解依赖:
dependencies { implementation "androidx.annotation:annotation:1.7.1" }
完整实现代码
import androidx.annotation.IntDef import kotlin.annotation.AnnotationRetention.SOURCE import kotlin.annotation.AnnotationTarget.* @IntDef( OPTIONS.OPTIONS_A.AA, OPTIONS.OPTIONS_A.AB, OPTIONS.OPTIONS_A.OPTIONS_AA.AAA, OPTIONS.OPTIONS_A.OPTIONS_AA.AAB, OPTIONS.OPTIONS_B.BA ) // 指定注解可作用的位置 @Target( TYPE, PARAMETER, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, LOCAL_VARIABLE, VALUE_PARAMETER ) // 源码级保留,无运行时开销 @Retention(SOURCE) annotation class OPTIONS { object OPTIONS_A { const val AA = 0 const val AB = 1 object OPTIONS_AA { const val AAA = 10 const val AAB = 11 } } object OPTIONS_B { const val BA = 2 } }
注意:嵌套object内的常量必须用const val修饰,保证是编译期常量,才能作为注解参数使用。
使用示例
和Java版本的调用方式完全一致:
// 定义使用该注解的方法 fun setOption(@OPTIONS option: Int) { // 业务逻辑 } // 调用示例 setOption(OPTIONS.OPTIONS_A.AA) setOption(OPTIONS.OPTIONS_A.OPTIONS_AA.AAA) setOption(OPTIONS.OPTIONS_B.BA)
如果传入不在@IntDef指定范围内的数值,编译器会直接抛出警告。
内容的提问来源于stack exchange,提问作者nirkov
相关产品推荐
相关产品推荐

