首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能在Android中kotlin的枚举基类中启动一个函数呢?

为什么我不能在Android中kotlin的枚举基类中启动一个函数呢?
EN

Stack Overflow用户
提问于 2022-03-12 14:05:38
回答 1查看 22关注 0票数 0

在代码A中,ELevel是枚举类,枚举中的fun getLevel将通过参数soundValue返回一个子类。

代码A可以编译。

我认为B代码更好,但实际上它不能编译,为什么?

码A

代码语言:javascript
复制
data class MSoundDensity(  
    val avg: Double=0.0,
    val max: Double=0.0,
    val level: ELevel=ELevel.Whisper.getLevel(avg)    
)

enum class ELevel(val label:String){
   Whisper("Whisper"),
   Quiet("Quiet Library");

   fun getLevel(soundValue:Double):ELevel{
       var temp=Whisper
       val i=soundValue.toInt()

       if (i in 1..20){
           temp=Whisper
       }

       if (i in 21..40){
           temp=Quiet
       }

       return temp
   }

}

码B

代码语言:javascript
复制
data class MSoundDensity(  
    val avg: Double=0.0,
    val max: Double=0.0,
    val level: ELevel=ELevel.getLevel(avg)  //It cause error when I use base class.    
)

//The same
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-12 14:14:37

就像任何其他类一样,如果您想这样调用它,而不是在类的实例上调用它,就必须将该函数放在一个伴生对象中。

代码语言:javascript
复制
enum class ELevel(val label:String){
    Whisper("Whisper"),
    Quiet("Quiet Library");

    companion object {
        fun getLevel(soundValue:Double):ELevel{
           //...
        }
    }

}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71450296

复制
相关文章

相似问题

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