2017-01-06 25 views
0

我想要實現的是,我在Java中使用,並應根據documentation做,能夠在科特林一個簡單的模式。我只是想用一些實現相同抽象函數的常量定義來聲明一個枚舉類。如何實現枚舉抽象函數常數

我的問題是,我不能設法使我的代碼編譯。我總是得到同樣的錯誤:

modifier abstract not allowed here

下面是代碼:

enum class Program { 
    HOME { 
     override fun readableName(context: Context): String { 
      return context.getString(R.string.program_home) 
     } 
    }, 
    WEEKEND { 
     override fun readableName(context: Context): String { 
      return context.getString(R.string.program_weekend) 
     } 
    }, 
    SHOPPING { 
     override fun readableName(context: Context): String { 
      return context.getString(R.string.program_shopping) 
     } 
    }; 

    abstract fun readableName(context: Context): String 
} 

我甚至從文檔中的示例代碼嘗試,但即使這樣不會編譯。

任何人都可以對這個奇怪的問題的想法?順便說一句我目前正在使用Kotlin 1.0.6。

+0

「匿名枚舉類」 - 哪些部位是匿名的?也許你的意思是「如何在Kotlin中使用Enum抽象函數」或類似的東西? – voddan

+1

@voddan基於這個問題,我會說你是對的。我編輯了標題。 –

回答

0

好吧......所以我發現了其中的問題是,這是不是我預計。 @Kirill Rakhman是對的,枚舉代碼沒有錯。我遇到了kapt的問題,因爲某些原因無法生成我的項目註釋。更具體地講我是用 - 什麼我錯過了爲實驗 - 新的可用gradle這個kapt插件記錄here

我回滾到以前的kapt設置更換

apply plugin: 'kotlin-kapt' 

通過

kapt { 
    generateStubs = true 
} 

和它的工作!不知道爲什麼編譯失敗,雖然聲明我的枚舉。

非常感謝那些花時間研究它的人,如果你有任何想法爲什麼實驗性的kapt插件沒有像預期的那樣行爲自由地評論這個答案,我很樂意想知道發生了什麼:)

0

我只是想你的代碼,它與科特林插件1.0.6釋放小Studio2.2-1

正常編譯或許你可以嘗試更新AndroidStudio /科特林插件?