作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在想知道如何申请@IntRange(from = 1)
到我的 Kotlin 属性(property)。经过几次失败的尝试后,我终于在 Java 中创建了我想要的类,并将其转换为 Android Studio 中的 Kotlin。这是我的Java类:
import android.support.annotation.IntRange;
public class SimpleThing {
private int val;
@IntRange(from = 1)
public int getVal() {
return val;
}
public void setVal(@IntRange(from = 1) int val) {
this.val = val;
}
}
import android.support.annotation.IntRange
class SimpleThing {
@get:IntRange(from = 1)
var `val`: Int = 0
}
@IntRange
似乎适用于 getter,但不适用于 setter。是否可以将此注释应用于 setter ,以便出现适当的 lint 警告。目前我刚刚重写了 set 方法来抛出一个 IllegalArgumentException ,如下所示:
@get:IntRange(from = 1)
var rowSize: Int = 3
set(value) {
if (value < 1) throw IllegalArgumentException("row size must be at least 1")
field = value
notifyDataSetChanged()
}
@set:IntRange(from = 1)
但我收到错误
This annotation does not apply for type void
因为它试图申请
@IntRange
返回值(在 setter 的情况下为 void),而不是 setter 参数。
最佳答案
@setparam
注释似乎是我正在寻找的东西,但是当我尝试分配范围之外的值时,Android Studio 中没有发出 lint 警告。
这是我的新代码:
@get:IntRange(from = 1)
@setparam:IntRange(from = 1)
var rowSize: Int = 3
set(value) {
if (value < 1) throw IllegalArgumentException("row size must be at least 1")
field = value
notifyDataSetChanged()
}
关于android - 如何将 @IntRange() 支持注释应用于 Kotlin 属性 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115999/
我是一名优秀的程序员,十分优秀!