Java 通过注释Kotlin限制参数中的值
我正在测试Kotlin注释,但无法让这段看似简单的代码正常工作 这是我的简单注释Java 通过注释Kotlin限制参数中的值,java,android,kotlin,Java,Android,Kotlin,我正在测试Kotlin注释,但无法让这段看似简单的代码正常工作 这是我的简单注释 @IntDef(1,2) @Target( AnnotationTarget.VALUE_PARAMETER) @Retention(AnnotationRetention.SOURCE) @MustBeDocumented annotation class OnlyOneTwo 现在我假设如果我用@onlynetwo装饰一个值参数,如果我给它一个像5这样的值,该方法将引发编译错误 我是这样使用这个注释的
@IntDef(1,2)
@Target(
AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class OnlyOneTwo
现在我假设如果我用@onlynetwo
装饰一个值参数,如果我给它一个像5
这样的值,该方法将引发编译错误
我是这样使用这个注释的
fun onlyTakesOneTwos(@OnlyOneTwo input:Int){
}
onlyTakesOneTwos(6) // shouldn't this throw a compile error ?
我记得在Java中它曾经抛出一个错误。首先,不是
Kotlin
编译器检查这种类型的注释错误,Android
Lint检查,在Java
中,这也可能行得通,并且优于枚举,但在Kotlin
中,唯一的方法是使用Enum
,您仍然可以在Kotlin
中使用@IntDef
提供建议,但其他值不会给您带来编译错误。同样对于ART,Enum的mem足迹也不是什么大问题,Google IO 2018在谈到ART时也谈到了这一点