キーワードと演算子
ハードキーワード
以下のトークンは常にキーワードとして解釈され、識別子として使用できません。
as
- 型キャストに使用されます。
- インポートのエイリアスを指定します。
as?
は安全な型キャストに使用されます。break
はループの実行を終了します。class
はクラスを宣言します。continue
は最も内側の囲みループの次のステップに進みます。do
はdo/while ループ (postcondition を持つループ) を開始します。else
は、条件が false の場合に実行されるif 式の分岐を定義します。false
は、Boolean 型の 'false' 値を指定します。for
はfor ループを開始します。fun
は関数を宣言します。if
はif 式を開始します。in
- for ループで反復されるオブジェクトを指定します。
- 値が範囲、コレクション、または 'contains' メソッドを定義する別のエンティティに属するかどうかを確認するための infix 演算子として使用されます。
- when 式で同じ目的で使用されます。
- 型パラメータを反変としてマークします。
!in
- 値が範囲、コレクション、または 'contains' メソッドを定義する別のエンティティに属さないかどうかを確認するための演算子として使用されます。
- when 式で同じ目的で使用されます。
interface
はインターフェースを宣言します。is
- 値が特定の型であるかどうかを確認します。
- when 式で同じ目的で使用されます。
!is
- 値が特定の型でないかどうかを確認します。
- when 式で同じ目的で使用されます。
null
は、どのオブジェクトも指さないオブジェクト参照を表す定数です。object
はクラスとそのインスタンスを同時に宣言します。package
は現在のファイルのパッケージを指定します。return
は最も内側の囲み関数または匿名関数から戻ります。super
this
throw
は例外をスローします。true
は、Boolean 型の 'true' 値を指定します。try
は例外処理ブロックを開始します。typealias
は型エイリアスを宣言します。typeof
は将来の使用のために予約されています。val
は読み取り専用のプロパティまたはローカル変数を宣言します。var
は可変のプロパティまたはローカル変数を宣言します。when
はwhen 式を開始します (指定された分岐のいずれかを実行します)。while
はwhile ループ (precondition を持つループ) を開始します。
ソフトキーワード
以下のトークンは、適用可能なコンテキストではキーワードとして機能し、他のコンテキストでは識別子として使用できます。
by
catch
は、特定の例外型を処理するブロックを開始します。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
は、infix 記法を使用して関数を呼び出すことを許可します。inline
は、コンパイラに関数とそれに渡されるラムダを呼び出しサイトでインライン化するように指示します。inner
は、ネストされたクラスから外部クラスのインスタンスを参照することを許可します。internal
は、宣言を現在のモジュールで可視としてマークします。lateinit
は、非 null プロパティをコンストラクタの外部で初期化することを許可します。noinline
は、インライン関数に渡されるラムダのインライン化をオフにします。open
はクラスのサブクラス化またはメンバーのオーバーライドを許可します。operator
は、関数を演算子のオーバーロードまたは規約の実装としてマークします。out
は、型パラメータを共変としてマークします。override
は、メンバーをスーパークラスメンバーのオーバーライドとしてマークします。private
は、宣言を現在のクラスまたはファイルで可視としてマークします。protected
は、宣言を現在のクラスとそのサブクラスで可視としてマークします。public
は、宣言をどこでも可視としてマークします。reified
は、インライン関数の型パラメータを実行時にアクセス可能としてマークします。sealed
はsealed class (サブクラス化が制限されたクラス) を宣言します。suspend
は、関数またはラムダを中断可能 ( コルーチンとして使用可能) としてマークします。tailrec
は、関数を末尾再帰としてマークします (コンパイラが再帰を反復に置き換えることを許可します)。vararg
は、パラメータに可変個の引数を渡すことを許可します。
特殊な識別子
以下の識別子は、特定のコンテキストでコンパイラによって定義され、他のコンテキストでは通常の識別子として使用できます。
field
は、プロパティアクセッサ内で、プロパティのバッキングフィールドを参照するために使用されます。it
は、ラムダ内で、そのパラメータを暗黙的に参照するために使用されます。
演算子と特殊記号
Kotlin は、以下の演算子と特殊記号をサポートしています。
+
,-
,*
,/
,%
- 数学演算子*
は、配列を vararg パラメータに渡すためにも使用されます。
=
- 代入演算子。
- パラメータのデフォルト値を指定するために使用されます。
+=
,-=
,*=
,/=
,%=
- 拡張代入演算子。++
,--
- インクリメントおよびデクリメント演算子。&&
,||
,!
- 論理 'and'、'or'、'not' 演算子 (ビット単位の演算の場合は、対応するinfix 関数を代わりに使用してください)。==
,!=
- 等価演算子 (プリミティブ型でない場合はequals()
の呼び出しに変換されます)。===
,!==
- 参照の等価演算子。<
,>
,<=
,>=
- 比較演算子 (プリミティブ型でない場合はcompareTo()
の呼び出しに変換されます)。[
,]
- インデックス付きアクセス演算子 (get
とset
の呼び出しに変換されます)。!!
は式が null 非許容であることを表明します。?.
は安全な呼び出しを実行します (レシーバが null 非許容の場合にメソッドを呼び出すか、プロパティにアクセスします)。?:
は、左側の値が null の場合に右側の値を取得します (elvis 演算子)。::
はメンバー参照またはクラス参照を作成します。..
,..<
は範囲を作成します。:
は、宣言内で名前を型から分離します。?
は、型をnull 許容としてマークします。->
@
- アノテーションを導入します。
- ループラベルを導入または参照します。
- ラムダラベルを導入または参照します。
- 'this' 式を外部スコープから参照します。
- 外部スーパークラスを参照します。
;
は、同じ行に複数のステートメントを分離します。`
は、関数名に通常許可されない文字を含むために使用されます。$
は、文字列テンプレートで変数または式を参照します。_
演算子の優先順位については、Kotlin 文法のこのリファレンスを参照してください。