Bird
Raised Fist0
Kotlinprogramming~5 mins

Safe casts with as? in Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the safe cast operator as? do in Kotlin?
It tries to cast a value to a specified type. If the cast is not possible, it returns null instead of throwing an exception.
Click to reveal answer
beginner
How is as? different from the regular as cast in Kotlin?
as throws a ClassCastException if the cast fails, while as? returns null safely without crashing the program.
Click to reveal answer
beginner
What will be the result of val x: String? = obj as? String if obj is an Int?
The result will be null because obj cannot be safely cast to String.
Click to reveal answer
intermediate
Why is using as? useful in Kotlin programming?
It helps avoid program crashes by safely handling type casts that might fail, making code more robust and easier to maintain.
Click to reveal answer
beginner
Write a simple Kotlin code snippet using as? to safely cast an Any type to String.
val obj: Any = 123 val str: String? = obj as? String println(str) // prints null because obj is not a String
Click to reveal answer
What does val x = obj as? String return if obj is an Int?
Anull
BThrows ClassCastException
CThe integer value
DEmpty string
Which operator in Kotlin safely casts a value and returns null if it fails?
Aas?
Bas
Cis
D!!
What happens if you use as to cast an incompatible type?
AReturns null
BReturns default value
CThrows ClassCastException
DCompiles but ignores cast
Which of these is a benefit of using as??
AForces non-null values
BImproves performance by skipping checks
CAutomatically converts types
DAvoids program crashes on bad casts
If val y = obj as? String and y is null, what does that mean?
AThe cast succeeded
B<code>obj</code> was not a String
C<code>obj</code> was a String
DThe program crashed
Explain how the safe cast operator as? works in Kotlin and why it is useful.
Think about what happens when a cast might fail.
You got /3 concepts.
    Write a Kotlin example using as? to safely cast an Any variable to a String and handle the null case.
    Try to cast and then check if the result is null before using it.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      What does the safe cast operator as? do in Kotlin?

      easy
      A. It converts a value to a string representation.
      B. It forces a cast and throws an exception if it fails.
      C. It tries to cast a value to a type and returns null if it fails.
      D. It checks if a value is null without casting.

      Solution

      1. Step 1: Understand the safe cast operator

        The as? operator attempts to cast a value to a specified type safely.
      2. Step 2: Behavior on failure

        If the cast is not possible, instead of throwing an error, it returns null.
      3. Final Answer:

        It tries to cast a value to a type and returns null if it fails. -> Option C
      4. Quick Check:

        Safe cast = returns null on failure [OK]
      Hint: Safe cast returns null if cast fails, no crash [OK]
      Common Mistakes:
      • Confusing safe cast with forced cast
      • Thinking it throws an exception on failure
      • Assuming it converts to string automatically
      2.

      Which of the following is the correct syntax for a safe cast in Kotlin?

      val x = obj ___ String
      easy
      A. as?
      B. to
      C. is
      D. as

      Solution

      1. Step 1: Identify safe cast syntax

        In Kotlin, the safe cast operator is as? which tries to cast safely.
      2. Step 2: Match syntax to code

        The code val x = obj as? String attempts to cast obj to String safely.
      3. Final Answer:

        as? -> Option A
      4. Quick Check:

        Safe cast syntax = as? [OK]
      Hint: Safe cast uses as? with question mark [OK]
      Common Mistakes:
      • Using as without question mark causes exception
      • Confusing is (type check) with as? (cast)
      • Using to which is for conversions, not casting
      3.

      What will be the output of this Kotlin code?

      val obj: Any = 123
      val str: String? = obj as? String
      println(str)
      medium
      A. null
      B. ClassCastException
      C. 123
      D. "123"

      Solution

      1. Step 1: Analyze the cast attempt

        Variable obj holds an integer 123, but we try to cast it to String using safe cast as?.
      2. Step 2: Safe cast behavior

        Since obj is not a String, the safe cast returns null instead of throwing an error.
      3. Final Answer:

        null -> Option A
      4. Quick Check:

        Safe cast fails = null output [OK]
      Hint: Safe cast returns null if types mismatch [OK]
      Common Mistakes:
      • Expecting ClassCastException instead of null
      • Thinking it converts integer to string automatically
      • Confusing safe cast with forced cast
      4.

      Identify the error in this Kotlin code snippet and fix it:

      val obj: Any = "Hello"
      val num: Int = obj as? Int
      println(num)
      medium
      A. Replace as? with as
      B. Change val num: Int to val num: Int?
      C. Cast obj to String instead of Int
      D. No error, code runs fine

      Solution

      1. Step 1: Analyze variable types and cast

        The safe cast obj as? Int returns null if cast fails, so the result is nullable Int?.
      2. Step 2: Fix type mismatch

        Declaring num as non-nullable Int causes a type mismatch error. Changing it to Int? fixes this.
      3. Final Answer:

        Change val num: Int to val num: Int? -> Option B
      4. Quick Check:

        Safe cast returns nullable type [OK]
      Hint: Safe cast result must be nullable type [OK]
      Common Mistakes:
      • Using non-nullable type for safe cast result
      • Replacing safe cast with forced cast causing exceptions
      • Ignoring type mismatch errors
      5.

      You have a list of Any objects: listOf(1, "two", 3.0, "four"). You want to create a new list containing only the strings using safe casts. Which Kotlin code correctly does this?

      hard
      A. val strings = list.mapNotNull { it as String? }
      B. val strings = list.map { it as String }
      C. val strings = list.filter { it is String }
      D. val strings = list.map { it as? String }.filterNotNull()

      Solution

      1. Step 1: Understand the goal

        We want to safely cast each element to String and keep only successful casts.
      2. Step 2: Analyze options

        val strings = list.map { it as? String }.filterNotNull() uses safe cast as? which returns null for non-strings, then filters out null values with filterNotNull(). This correctly produces a list of strings.
      3. Step 3: Why others are incorrect

        val strings = list.map { it as String } forces cast and will throw exception on non-strings. val strings = list.filter { it is String } filters by type but does not cast, so type is still Any. val strings = list.mapNotNull { it as String? } tries to cast with forced cast inside mapNotNull which will throw exception.
      4. Final Answer:

        val strings = list.map { it as? String }.filterNotNull() -> Option D
      5. Quick Check:

        Safe cast + filterNotNull = filtered strings [OK]
      Hint: Use as? with filterNotNull to keep only successful casts [OK]
      Common Mistakes:
      • Using forced cast causing exceptions
      • Filtering type without casting
      • Misusing mapNotNull with forced cast
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard