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