You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:36:02