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

Android中如何为Kotlin属性的setter添加@IntRange注解支持

在Kotlin中为属性添加@IntRange注解的正确姿势

我懂你之前直接给Kotlin属性加@IntRange注解碰壁的烦恼,通过Java类转Kotlin的思路确实能帮我们找到正确的写法。先来看Android Studio自动转换后的代码:

import android.support.annotation.IntRange

class SimpleThing {
    var `val`: Int = 0
        @IntRange(from = 1) get
        set(@IntRange(from = 1) value) {
            field = value
        }
}

为什么直接给属性加注解会失败?

在Kotlin中,如果你直接把@IntRange标注在属性变量上,这个注解只会作用于属性的底层存储字段,而不会对getter的返回值和setter的参数生效——这正是你之前尝试无效的核心原因。

更简洁的写法

你也可以用Kotlin的目标注解语法,直接在属性上指定注解作用于getter和setter,代码会更紧凑:

import android.support.annotation.IntRange

class SimpleThing {
    @set:IntRange(from = 1)
    @get:IntRange(from = 1)
    var value: Int = 1 // 初始化值要符合范围,避免初始状态就违反约束
}

关键说明

  • @get:IntRange(from = 1):指定注解作用于getter的返回值,确保获取属性值时符合1及以上的范围要求。
  • @set:IntRange(from = 1):指定注解作用于setter的参数,确保赋值时传入的数值符合范围约束。
  • 初始化值一定要符合@IntRange的要求(比如这里设为1),否则会触发编译警告或运行时校验问题。

内容的提问来源于stack exchange,提问作者fraterboots

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:59:41