Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过注释Kotlin限制参数中的值_Java_Android_Kotlin - Fatal编程技术网

Java 通过注释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这样的值,该方法将引发编译错误 我是这样使用这个注释的

我正在测试Kotlin注释,但无法让这段看似简单的代码正常工作

这是我的简单注释

@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时也谈到了这一点