首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin类型定义

Kotlin类型定义
EN

Stack Overflow用户
提问于 2019-09-24 18:02:02
回答 1查看 268关注 0票数 3

我尝试使用IntDef类型定义函数来限制特定类型的参数。但是当我用java使用IntDef时,它可以正常工作,但同时,它不能与kotlin一起工作。下面是我的代码片段:

在JAVA中-

代码语言:javascript
复制
@IntDef({CASH,WITHDRAW}) 
@Retention(RetentionPolicy.SOURCE) 
public @interface TransTypeJava { 
int CASH = 1; int WITHDRAW = 2;
}

在科特林-

代码语言:javascript
复制
const val CASH = 1 const val WITHDRAW = 2 
@IntDef(CASH, WITHDRAW) 
@kotlin.annotation.Retention(AnnotationRetention.SOURCE) 
internal annotation class TransTypeKotlin

在类中使用-

代码语言:javascript
复制
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.CASHTransTypeJava.WITHDRAW,通过传递TransTypeJava类型以外的值。

代码语言:javascript
复制
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类型以外的值来显示任何错误。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-09-24 18:08:52

试试这个

代码语言:javascript
复制
@IntDef(MALE, FEMALE)
@Retention(AnnotationRetention.SOURCE)
annotation class UserRoleType {
    companion object {
        const val MALE = 1
        const val FEMALE = 2
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58077786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档