0Pricing
Kotlin Academy · レッスン

isとas演算子

型チェックとキャストを学びます

「isとas演算子」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

型のチェックとキャスト

Kotlinには、実行時に型を扱うための2つの演算子があります。

  • isは、値がある型であるかをチェックします
  • asは、値をある型にキャストします

どちらにも安全なバリエーションがあり、このレッスンで学びます。

is演算子

isは、値が指定した型に一致するかどうかを示すブール値を返します。

スマートキャストの基盤となる演算子です。

fun main() {
    val x: Any = "hello"
    println(x is String)
    println(x is Int)
}

!isによる否定チェック

!isを使うと、値が指定した型ではないことをチェックできます。

ガード節で自然に読める記述になります。

fun main() {
    val x: Any = 42
    if (x !is String) {
        println("not a string")
    }
}

as演算子

asは明示的なキャストを実行します。値が実際にその型であれば、正しい型として返されます。

コンパイラー自身が型を推論できない場合に使用します。

fun main() {
    val x: Any = "hello"
    val s = x as String
    println(s.length)
}

asが失敗する場合

値が対象の型でない場合、asはClassCastExceptionをスローします。

これは安全でないバリエーションなので、確実に型が一致するときだけ使用してください。

fun main() {
    val x: Any = 42
    try {
        val s = x as String
        println(s)
    } catch (e: ClassCastException) {
        println("Cannot cast Int to String")
    }
}

安全なキャストas?

as?は安全なキャストです。値を指定した型にキャストして返し、キャストできない場合はnullを返します。

例外はスローされません。

fun main() {
    val x: Any = 42
    val s = x as? String
    println(s)
}

Elvisによる安全なキャスト

as?とElvis演算子を組み合わせると、キャストに失敗した場合の代替処理を指定できます。

クラッシュを防げる、すっきりしたパターンです。

fun main() {
    val x: Any = 42
    val s = (x as? String) ?: "default"
    println(s)
}

isがスマートキャストを有効にする

isチェックの後は通常、スマートキャストが働くため、asは必要ありません。

明示的なasは、スマートキャストを適用できない場合だけ使用してください。

fun main() {
    val x: Any = "smart"
    if (x is String) {
        println(x.uppercase()) // smart cast, no as needed
    }
}

コレクションでのキャスト

安全なキャストは、異なる型が混在するコレクションをフィルタリングするときに便利です。

filterIsInstanceは内部でisを使い、一致する要素だけを残します。

fun main() {
    val items: List<Any> = listOf(1, "two", 3, "four")
    val strings = items.filterIsInstance<String>()
    println(strings)
}

適切な演算子の選択

簡単な指針を示します。

  • ブール値が必要ですか?isを使います
  • 型が確実ですか?asを使います
  • 確信がありませんか?代替処理とともにas?を使います
fun describe(x: Any): String {
    val text = x as? String ?: return "not text"
    return "text of length " + text.length
}

fun main() {
    println(describe("hello"))
    println(describe(99))
}

まとめ

型演算子を使うと、型を完全に制御できます。

  • is / !isで型をチェックします
  • asでキャストしますが、例外がスローされる場合があります
  • as?で安全にキャストし、失敗時にはnullを返します
fun main() {
    val values: List<Any> = listOf(1, "hi", 2.5)
    for (v in values) {
        when {
            v is Int -> println("int " + v)
            v is String -> println("string " + v)
            else -> println("other")
        }
    }
}

理解度チェック

isとasについての理解度を確認しましょう。

まとめ

型演算子について学びました。

  • 型チェックにはisと!isを使います
  • 例外がスローされる可能性があるキャストにはasを使います
  • nullを返す安全なキャストにはas?を使います

次は、すべてのケースを網羅するようにwhenを記述します。

よくある質問

「isとas演算子」レッスンは無料ですか?

はい。「isとas演算子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「isとas演算子」で何を学びますか?

型チェックとキャストを学びます ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「isとas演算子」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 式としてのwhen
  2. スマートキャスト
  3. isとas演算子
  4. 網羅的なwhen
← Kotlin Academyに戻る