2017-01-06 10 views
0

私が達成しようとしているのは、私がJavaで使っている簡単なパターンで、documentationに従ってKotlinで実行できるはずです。私は、同じ抽象関数を実装するいくつかの定数定義を持つenumクラスを宣言したいだけです。Enum定数で抽象関数を実装する方法

私の問題は、自分のコードをコンパイルすることができないということです。私はいつも同じエラーが表示されます。ここでは

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 
} 

私もドキュメントからのサンプルコードを試してみましたが、まだでも、これはコンパイルされません。

誰でもこの奇妙な問題について考えてもらえますか? Btw私は現在Kotlin 1.0.6を使用しています。

+0

"Enum anonymous class" - 匿名の部分は何ですか? 「Kotlinで抽象関数を使ってEnumを使う方法」なのかもしれませんか? – voddan

+1

@voddan質問に基づいて、私はあなたが正しいと言います。私はタイトルを編集しました。 –

答えて

0

申し訳ありませんが、私は問題がどこにあるのかを知り、予想されたものではありませんでした。 @Kirill Rakhmanが正しかった、列挙型コードに間違いはなかった。私はプロジェクトの注釈を生成することができなかったkaptに問題がありました。具体的には、私が実験的に見逃したものを使用していました。新しく入手可能なgradle kaptプラグインは、hereと書かれています。

私は

kapt { 
    generateStubs = true 
} 

によって

apply plugin: 'kotlin-kapt' 

を置き換えることにより、バック以前kapt設定にロールそして、それは働きました!私の列挙を宣言している間になぜコンパイルが失敗したのか分かりません。

これを調べる時間がかかった人にはお世話になりました。実験的なkaptプラグインが期待どおりに動作しなかった理由が分かっていれば、私は喜んで何が起こったのかを知りたいと思います。

0

は、私はちょうどあなたのコードを試してみました、たぶん、あなただけAndroidStudio/Kotlinのプラグインを更新しようとすることができますKotlinプラグイン1.0.6リリース - Studio2.2-1

で正常にコンパイルされていますか?

関連する問題