4. Kotlin キーワード (予約語)
概要
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) } |
do | do-while ループを開始する | do { x++ } while (x < 10) |
else | if 式の false の場合の処理を指定する | if (x > 0) println(“positive") else println(“negative") |
false | 真偽値の偽を表す | val isDone = false |
for | for ループを開始する | 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") |
null | null 参照を表す | 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 |
when | when 式を開始する | when (x) { 1 -> println(“one"); else -> println(“other") } |
while | while ループを開始する | while (x < 10) { x++ } |
Soft Keywords
以下は Software Keywords と呼ばれ、特定のコンテキストでキーワード(予約語)となります。その特定のコンテキスト外では、識別子として利用することは可能です。
キーワード | 説明 | 利用例 |
---|---|---|
by | 委譲プロパティを宣言する | val name by lazy { “John" } |
catch | try-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") |
finally | try-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