Bird
Raised Fist0
Kotlinprogramming~10 mins

Safe casts with as? in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to safely cast 'obj' to String using 'as?'.

Kotlin
val str = obj [1] String
Drag options to blanks, or click blank then click option'
Aas
Bis
Cas?
Dto
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'as' which throws an exception if the cast fails.
Using 'is' which checks type but does not cast.
Using 'to' which is not a cast operator.
2fill in blank
medium

Complete the code to safely cast 'item' to Int and assign to 'number'.

Kotlin
val number: Int? = item [1] Int
Drag options to blanks, or click blank then click option'
Aas?
Bis
Cas
Dto
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'as' which throws an exception if cast fails.
Using 'is' which only checks type but does not cast.
Using 'to' which is not a cast operator.
3fill in blank
hard

Fix the error in the code by replacing the cast operator with a safe cast.

Kotlin
val text = data [1] String
Drag options to blanks, or click blank then click option'
Aas?
Bis
Cas
Dto
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'as' which throws exceptions on failure.
Using 'is' which does not cast but only checks type.
4fill in blank
hard

Fill both blanks to create a safe cast and check if the result is null.

Kotlin
val result = value [1] String
if (result [2] null) {
    println("Cast succeeded")
}
Drag options to blanks, or click blank then click option'
Aas?
B==
C!=
Das
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'as' instead of 'as?' causing exceptions.
Using '==' instead of '!=' to check for null.
5fill in blank
hard

Fill all three blanks to safely cast 'input' to Double, check if not null, and print the value.

Kotlin
val number = input [1] Double
if (number [2] null) {
    println("Number is: [3]")
}
Drag options to blanks, or click blank then click option'
Aas?
B!=
Cnumber
Das
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'as' instead of 'as?'.
Checking '==' null instead of '!=' null.
Printing a wrong variable name.

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