キーワードと演算子
ハードキーワード
次のトークンは常にキーワードとして解釈され、識別子として使用することはできません。
as- 型キャストに使用されます。
- インポートのエイリアスを指定します。
as?は安全な型キャストに使用されます。breakはループの実行を終了します。classはクラスを宣言します。continueは最も近い囲んでいるループの次のステップに進みます。doはdo/whileループ(後置条件付きループ)を開始します。elseは条件がfalseの場合に実行されるif式のブランチを定義します。falseはBoolean型の'false'値を指定します。forはforループを開始します。funは関数を宣言します。ifはif式を開始します。in- forループでイテレートされるオブジェクトを指定します。
- 範囲、コレクション、または'contains'メソッドを定義するその他のエンティティに値が属するかどうかをチェックする中置演算子として使用されます。
- when式でも同じ目的で使用されます。
- 型パラメータを反変としてマークします。
!in- 範囲、コレクション、または'contains'メソッドを定義するその他のエンティティに値が属さないことをチェックする演算子として使用されます。
- when式でも同じ目的で使用されます。
interfaceはインターフェースを宣言します。is- 値が特定の型であるかをチェックします。
- when式でも同じ目的で使用されます。
!is- 値が特定の型ではないかをチェックします。
- when式でも同じ目的で使用されます。
nullはどのオブジェクトも指さないオブジェクト参照を表す定数です。objectはクラスとそのインスタンスを同時に宣言します。packageは現在のファイルのパッケージを指定します。returnは最も近い囲んでいる関数または匿名関数から戻ります。superthisthrowは例外をスローします。trueはBoolean型の'true'値を指定します。tryは例外処理ブロックを開始します。typealiasは型エイリアスを宣言します。typeofは将来の使用のために予約されています。valは読み取り専用のプロパティまたはローカル変数を宣言します。varは可変のプロパティまたはローカル変数を宣言します。whenはwhen式(与えられたブランチの1つを実行)を開始します。whileはwhileループ(前置条件付きループ)を開始します。
ソフトキーワード
次のトークンは、適用可能なコンテキストではキーワードとして機能し、他のコンテキストでは識別子として使用できます。
bycatchは特定の例外型を処理するブロックを開始します。constructorはプライマリまたはセカンダリコンストラクタを宣言します。delegateはアノテーション使用サイトターゲットとして使用されます。dynamicはKotlin/JSコードで動的型を参照します。fieldはアノテーション使用サイトターゲットとして使用されます。fileはアノテーション使用サイトターゲットとして使用されます。finallyはtryブロックが終了するときに常に実行されるブロックを開始します。get- プロパティのゲッターを宣言します。
- アノテーション使用サイトターゲットとして使用されます。
importは別のパッケージの宣言を現在のファイルにインポートします。initは初期化ブロックを開始します。paramはアノテーション使用サイトターゲットとして使用されます。propertyはアノテーション使用サイトターゲットとして使用されます。receiverはアノテーション使用サイトターゲットとして使用されます。set- プロパティのセッターを宣言します。
- アノテーション使用サイトターゲットとして使用されます。
setparamはアノテーション使用サイトターゲットとして使用されます。valueはclassキーワードと組み合わせて、インラインクラスを宣言します。whereはジェネリック型パラメータの制約を指定します。
修飾子キーワード
次のトークンは、宣言の修飾子リストではキーワードとして機能し、他のコンテキストでは識別子として使用できます。
abstractはクラスまたはメンバーを抽象としてマークします。actualはマルチプラットフォームプロジェクトにおけるプラットフォーム固有の実装を示します。annotationはアノテーションクラスを宣言します。companionはコンパニオンオブジェクトを宣言します。constはプロパティをコンパイル時定数としてマークします。crossinlineはインライン関数に渡されたラムダ内での非ローカルリターンを禁止します。dataはコンパイラにクラスの標準メンバーを生成するよう指示します。enumは列挙型を宣言します。expectは宣言をプラットフォーム固有としてマークし、プラットフォームモジュールでの実装を期待します。externalは宣言をKotlinの外部で実装されているものとしてマークします(JNIまたはJavaScriptを介してアクセス可能)。finalはメンバーのオーバーライドを禁止します。infixは中置記法を使用して関数を呼び出すことを許可します。inlineはコンパイラに関数とその関数に渡されたラムダを呼び出しサイトでインライン化するよう指示します。innerはネストされたクラスから外部クラスのインスタンスを参照することを許可します。internalは宣言を現在のモジュール内で可視としてマークします。lateinitはコンストラクタの外部で非null許容プロパティを初期化することを許可します。noinlineはインライン関数に渡されたラムダのインライン化をオフにします。openはクラスのサブクラス化またはメンバーのオーバーライドを許可します。operatorは関数を演算子のオーバーロードまたは規約の実装としてマークします。outは型パラメータを共変としてマークします。overrideはメンバーをスーパークラスメンバーのオーバーライドとしてマークします。privateは宣言を現在のクラスまたはファイル内で可視としてマークします。protectedは宣言を現在のクラスとそのサブクラス内で可視としてマークします。publicは宣言をどこでも可視としてマークします。reifiedはインライン関数の型パラメータを実行時にアクセス可能としてマークします。sealedはsealedクラス(サブクラス化が制限されたクラス)を宣言します。suspendは関数またはラムダをサスペンド可能(コルーチンとして使用可能)としてマークします。tailrecは関数を末尾再帰としてマークします(コンパイラが再帰をイテレーションに置き換えることを許可します)。varargはパラメータに可変数の引数を渡すことを許可します。
特殊識別子
次の識別子は、特定のコンテキストでコンパイラによって定義され、他のコンテキストでは通常の識別子として使用できます。
fieldはプロパティアクセサ内で、プロパティのバッキングフィールドを参照するために使用されます。itはラムダ内で、そのパラメータを暗黙的に参照するために使用されます。
演算子と特殊記号
Kotlinは次の演算子と特殊記号をサポートしています。
+,-,*,/,%- 算術演算子*は、配列を可変長引数パラメータに渡すためにも使用されます。
=- 代入演算子。
- パラメータのデフォルト値を指定するために使用されます。
+=,-=,*=,/=,%=- 複合代入演算子。++,--- インクリメントおよびデクリメント演算子。&&,||,!- 論理「AND」、「OR」、「NOT」演算子(ビット演算には、対応する中置関数を使用してください)。==,!=- 等価演算子(非プリミティブ型の場合はequals()の呼び出しに変換されます)。===,!==- 参照等価演算子。<,>,<=,>=- 比較演算子(非プリミティブ型の場合はcompareTo()の呼び出しに変換されます)。[,]- インデックスアクセス演算子(getおよびsetの呼び出しに変換されます)。!!は式が非nullであることをアサートします。?.はセーフコールを実行します(レシーバが非nullの場合にメソッドを呼び出すかプロパティにアクセスします)。?:は左側の値がnullの場合に右側の値を取ります(エルビス演算子)。::はメンバー参照またはクラス参照を作成します。..,..<は範囲を作成します。:は宣言内で名前と型を区切ります。?は型をnull許容としてマークします。->@- アノテーションを導入します。
- ループラベルを導入または参照します。
- ラムダラベルを導入または参照します。
- 外部スコープからの「this」式を参照します。
- 外部スーパークラスを参照します。
;は同じ行の複数のステートメントを区切ります。$は文字列テンプレート内の変数または式を参照します。_
演算子の優先順位については、Kotlin文法のこのリファレンスを参照してください。
