如何在Enum常量中实现抽象函数

我试图实现的是一个简单的模式,我正在使用Java,并应根据文档在Kotlin中可行。 我只是想用一些实现相同抽象函数的常量定义来声明一个枚举类。

我的问题是,我无法设法让我的代码编译。 我总是得到相同的错误:

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。

我只是试过你的代码,它通常用Kotlin插件1.0.6-release-Studio2.2-1编译

也许你可以尝试更新AndroidStudio / Kotlin插件?

好的…所以我发现问题出在哪里,这不是我所期望的。 @Kirill Rakhman是对的,枚举代码没有错。 我有一个问题,因为某些原因无法生成我的项目注释。 更具体地说,我正在使用 – 我作为实验错过了 – 这里记录的新的gradle kapt插件。

我通过替换回滚到以前的kapt设置

 apply plugin: 'kotlin-kapt' 

通过

 kapt { generateStubs = true } 

它的工作! 不知道为什么编译失败,虽然声明我的枚举。

非常感谢那些花时间研究它的人,如果你有任何想法为什么实验性的kapt插件不像预期的那样自由地评论这个答案,我会很高兴想知道发生了什么:)