※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

4. Kotlin キーワード (予約語)

2023年7月3日

概要

Kotlin には、事前定義されたキーワード・予約語があり、コンパイラーにとって特別な意味を持ちます。
これらのキーワードを識別子(変数名など)としては利用できない、あるいは識別子としての利用に制限があります。

Kotlin では 以下のタイプのキーワードがあります。

  • Hard Keywords (ハードキーワード)
  • Soft keywords (ソフトキーワード)
  • Modifier keywords (修飾子キーワード)

Hard Keywords

以下は Hard Keywords と呼ばれ、常にキーワードとして解釈するため識別子に使うことはできません。

キーワード説明利用例
as型キャストを行うval x = y as String
breakループを終了するwhile (true) { if (x == 0) break }
classクラスを宣言するclass MyClass{ }
continueループの次の反復処理に進むfor (i in 1..10) { if (i % 2 == 0) continue; println(i) }
dodo-while ループを開始するdo { x++ } while (x < 10)
elseif 式の false の場合の処理を指定するif (x > 0) println(“positive") else println(“negative")
false真偽値の偽を表すval isDone = false
forfor ループを開始するfor (i in 1..10) println(i)
fun関数を宣言するfun add(x: Int, y: Int): Int = x + y
if条件分岐を行うif (x > 0) println(“positive")
in範囲内にあるか、コレクションに含まれるかをチェックするif (x in 1..10) println(“in range")
interfaceインターフェースを宣言するinterface MyInterface { }
is型チェックを行うif (x is String) println(“x is a string")
nullnull 参照を表すval x: String? = null
objectオブジェクト宣言を行うobject MyObject { }
packageパッケージを宣言するpackage com.example
return関数から値を返すfun add(x: Int, y: Int): Int { return x + y }
superスーパークラスのメンバーにアクセスするsuper.onCreate(savedInstanceState)
this現在のインスタンスを参照するthis.name = “John"
throw例外をスローするthrow IllegalArgumentException(“Invalid argument")
true真偽値の真を表すval isDone = true
try例外処理ブロックを開始するtry { // 例外が発生する可能性のある処理 } catch (e: Exception) { // 例外処理 }
typealias型エイリアスを宣言するtypealias Name = String
val読み取り専用のプロパティを宣言するval name = “John"
var読み書き可能なプロパティを宣言するvar count = 0
whenwhen 式を開始するwhen (x) { 1 -> println(“one"); else -> println(“other") }
whilewhile ループを開始するwhile (x < 10) { x++ }

Soft Keywords

以下は Software Keywords と呼ばれ、特定のコンテキストでキーワード(予約語)となります。その特定のコンテキスト外では、識別子として利用することは可能です。

キーワード説明利用例
by委譲プロパティを宣言するval name by lazy { “John" }
catchtry-catch ブロックの catch 節を宣言するtry { // 例外が発生する可能性のある処理 } catch (e: Exception) { // 例外処理 }
constructorセカンダリコンストラクタを宣言するclass MyClass constructor(name: String)
delegate委譲パターンを実装するdelegate.doSomething()
dynamic動的型付けを有効にする(主に JavaScript との相互運用で使用)dynamic x = “Hello"
fieldプロパティのバッキングフィールドにアクセスするvar count = 0; set(value) { field = value }
fileファイルクラスを表す(アノテーションで使用)@file:JvmName(“Utils")
finallytry-catch-finally ブロックの finally 節を宣言するtry { // 例外が発生する可能性のある処理 } finally { // 後処理 }
getプロパティのゲッターを定義するval name: String get() = “John"
import別のパッケージからクラスや関数をインポートするimport com.example.MyClass
init初期化ブロックを定義するclass MyClass { init { println(“Initialized") } }
param関数のパラメータを表す(アノテーションで使用)@param name パラメータの説明
propertyプロパティを表す(アノテーションで使用)@property name プロパティの説明
receiver拡張関数またはプロパティのレシーバーを表す(アノテーションで使用)@receiver レシーバーの説明
setプロパティのセッターを定義するvar count = 0; set(value) { field = value }
setparamセッターパラメータを表す(アノテーションで使用)@setparam value セッターパラメータの説明
where型パラメータの制約を指定するfun <T> myFunction(x: T) where T : Number

Modifier Keywords

以下は Modifier Keywords です。クラス、関数、プロパティなどの宣言を変更するために使用されます。それ以外のコンテキストでは識別子として利用可能です。

キーワード説明利用例
abstract抽象クラスまたは関数を宣言するabstract class MyAbstractClass { }
actual共通コードのプラットフォーム固有の実装を宣言するactual fun platformName(): String = “Android"
annotationアノテーションクラスを宣言するannotation class MyAnnotation
companionコンパニオンオブジェクトを宣言するcompanion object { }
constコンパイル時定数を宣言するconst val PI = 3.14
crossinlineインライン関数の非ローカルリターンを禁止するinline fun myFunction(crossinline block: () -> Unit)
dataデータクラスを宣言するdata class Person(val name: String, val age: Int)
enum列挙型を宣言するenum class Color { RED, GREEN, BLUE }
expect共通コードのプラットフォーム固有の実装を期待するexpect fun platformName(): String
external外部で定義された関数を宣言するexternal fun myExternalFunction()
finalクラスまたは関数のオーバーライドを禁止するfinal class MyClass { }
infix中置記法で呼び出せる関数を宣言するinfix fun Int.plus(other: Int): Int = this + other
inlineインライン関数を宣言するinline fun myFunction(block: () -> Unit)
inner内部クラスを宣言するinner class InnerClass { }
internalモジュール内でのみアクセス可能な宣言を行うinternal val myInternalProperty = 0
lateinit後で初期化されるプロパティを宣言するlateinit var myLateinitProperty: String
noinlineインライン関数の特定のラムダ式をインライン化しないinline fun myFunction(noinline block: () -> Unit)
openクラスまたは関数のオーバーライドを許可するopen class MyClass { }
operator演算子オーバーロードを定義するoperator fun plus(other: MyClass): MyClass = …
out共変型パラメータを宣言するinterface Producer<out T> { fun produce(): T }
overrideスーパークラスのメンバーをオーバーライドするoverride fun toString(): String = …
privateクラス内でのみアクセス可能な宣言を行うprivate val myPrivateProperty = 0
protectedクラスとそのサブクラス内でのみアクセス可能な宣言を行うprotected val myProtectedProperty = 0
publicどこからでもアクセス可能な宣言を行うpublic val myPublicProperty = 0
reifiedインライン関数内で型パラメータの実際の型にアクセスするinline fun <reified T> myFunction()
sealed制限されたクラス階層を宣言するsealed class MySealedClass
suspend中断関数を宣言するsuspend fun mySuspendFunction()
tailrec末尾再帰関数を宣言するtailrec fun factorial(n: Int, acc: Int = 1): Int = …
vararg可変長引数を宣言するfun myFunction(vararg args: Int)

公式サイトの情報

公式サイトでの情報は以下です。
https://kotlinlang.org/docs/keyword-reference.html