Kotlinのデータクラス内に列挙型をネストする方法はありますか?
data class D(val a:Any) {
enum class E {F,G}
...
}
または、関数内でインラインで宣言しますか?
fun foo() {
enum class E {F,G}
doSomething()
}
列挙型を宣言できる場所のルールに関するドキュメントが見つかりません。
現在、構文のkotlin仕様はありません。KotlinはJavaに基づいているため、仕様を検索する場合はJLSを参照できます。そのため、一部の仕様はKotlinでも適切です。
ネストされた列挙型は暗黙的に静的です。ネストされた列挙型の宣言で静的修飾子を冗長に指定することは許可されています。
本体内に列挙型を宣言することは不可能であることを意味し、内側内部クラスを持つことができないので、クラス(8.1.3)静的以外のメンバー定数変数を。
そして、すべてのローカルクラスは内部クラスです。
したがって、enum
クラスはlocal
関数スコープとinner
クラス以外のどこでも宣言できます。
あなたは必ずどこタイプを定義することができない場合は、順番にスコープを要求しようとすることができます:local
> class
> top
、そしてkotlinコンパイラはあなたにあなたの正確なコンパイラエラーメッセージが表示されます。例えば:
IFあなたが定義するconst val
ローカル機能では、コンパイラは以下のようにエラーを報告します:
fun local() {
const val foo="bar"
// ^--- the modifier `const` is not applicable to `local variable`
}
IFあなたが定義しconst val
、共通のクラス/インタフェースでは、コンパイラは以下のようにエラーを報告します。
interface Foo {
const val foo = "bar"
//^--- `const val` only allowed on top-level or objects.
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加