这里有两个代码示例
的java:
public class Q {
@Retention(RetentionPolicy.SOURCE)
@IntDef({LOL.one, LOL.two})
@interface Lol{}
public final class LOL{
public final static int one = 1;
public final static int two = 2;
}
public Q(){
q(1);
}
void q (@Lol int q){
}
}
科特林:
class Q {
@Retention(AnnotationRetention.SOURCE)
@IntDef(LOL.one, LOL.two)
internal annotation class Lol
object LOL {
const val one = 1L
const val two = 2L
}
init {
q(1)
}
internal fun q(@Lol q: Int) {
}
}
有问题:在java中调用此 q(1); 会显示如下错误:“必须是......之一”
但是在kotlin中没有任何错误信息,所以我们可以随时将参数作为参数......所以我们失去了注释作为参数的优势......
看起来像是一个错误,或者我做错了什么?
答案 0 :(得分:2)
这不是错误。这是Kotlin尚未实现的功能。它计划在未来。