キーワードと演算子
ハードキーワード
以下のトークンは常にキーワードとして解釈され、識別子として使用することはできません。
as
- 型キャストに使用されます。
- インポートのエイリアスを指定します。
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
は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」演算子(ビット演算には、対応するinfix関数を使用します)。==
,!=
– 等値演算子(非プリミティブ型ではequals()
の呼び出しに変換されます)。===
,!==
– 参照等価演算子。<
,>
,<=
,>=
– 比較演算子(非プリミティブ型ではcompareTo()
の呼び出しに変換されます)。[
,]
– インデックスアクセス演算子(get
およびset
の呼び出しに変換されます)。!!
は式がnull非許容であることをアサートします。?.
は安全呼び出しを実行します(レシーバーがnull非許容の場合にメソッドを呼び出すかプロパティにアクセスします)。?:
は左辺値がnullの場合に右辺値を取ります(エルビス演算子)。::
はメンバー参照またはクラス参照を作成します。..
,..<
は範囲を作成します。:
は宣言で名前を型から分離します。?
は型をnull許容としてマークします。->
@
- アノテーションを導入します。
- ループラベルを導入または参照します。
- ラムダラベルを導入または参照します。
- 外側のスコープからの「this」式を参照します。
- 外側のスーパークラスを参照します。
;
は同じ行上の複数のステートメントを分離します。$
は文字列テンプレート内の変数または式を参照します。_
演算子の優先順位については、Kotlin文法のこのリファレンスを参照してください。