【发布时间】:2019-09-24 10:02:02
【问题描述】:
我正在尝试 IntDef typedef 将特定类型的参数限制为函数。但是,当我使用 Java 使用 IntDef 时,它可以正常工作,但同时不能与 kotlin 一起使用。下面是我的代码 sn-p -
在 JAVA 中 -
@IntDef({CASH,WITHDRAW})
@Retention(RetentionPolicy.SOURCE)
public @interface TransTypeJava {
int CASH = 1; int WITHDRAW = 2;
}
在 Kotlin 中 -
const val CASH = 1 const val WITHDRAW = 2
@IntDef(CASH, WITHDRAW)
@kotlin.annotation.Retention(AnnotationRetention.SOURCE)
internal annotation class TransTypeKotlin
在课堂上使用 -
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
demo(TransTypeJava.CASH)// Working
demo(1) // Showing compile time error
}
fun demo(@TransTypeJava type:Int){}
调用演示函数给我一个错误,说必须是以下之一:
TransTypeJava.CASH, TransTypeJava.WITHDRAW 通过传递 TransTypeJava 类型以外的值。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
demo(TransTypeKotlin.CASH) //Working
demo(1) // Working
}
fun demo(@TransTypeKotlin type: Int){}
在将它与 kotlin 一起使用时,它不会通过传递 TransTypeKotlin 类型以外的值来显示任何错误。任何帮助将不胜感激。
【问题讨论】:
-
同样的问题,你找到解决办法了吗?
-
stackoverflow.com/a/37839539/2736039 这里目前只在java中声明
标签: kotlin