首页 > 解决方案 > 通过注释 Kotlin 限制参数中的值

问题描述

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

这是我的简单注释

@IntDef(1,2)
@Target(
    AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class OnlyOneTwo

现在我假设如果我用 装饰一个值参数@OnlyOneTwo,如果我给它一个像5.

我正在使用这样的注释

fun onlyTakesOneTwos(@OnlyOneTwo input:Int){

}
onlyTakesOneTwos(6) // shouldn't this throw a compile error ?

我记得在Java中它曾经抛出一个错误。

标签: javaandroidkotlin

解决方案


首先,不是Kotlin编译器检查这种类型的注释错误,AndroidLint 确实如此,这也可能有效并且优于枚举Java,但是在 中Kotlin,执行这些操作的唯一方法是使用enums,您仍然可以使用@IntDefinKotlin来提供建议,但其他values 不会给你一个编译错误。同样对于 ART,枚举的内存占用空间也不是什么大问题,Google IO 2018 也在讨论ART https://youtu.be/IrMw7MEgADk?t=855时也提到了这一点


推荐阅读