Bird
Raised Fist0
Kotlinprogramming~20 mins

Object expressions (anonymous objects) in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Anonymous Object Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of an anonymous object with overridden method
What is the output of this Kotlin code using an anonymous object?
Kotlin
val obj = object {
    fun greet() = "Hello from anonymous object"
}
println(obj.greet())
AHello from anonymous object
BCompilation error: anonymous object cannot have functions
Cnull
DRuntime error: Unresolved reference greet
Attempts:
2 left
💡 Hint
Anonymous objects can have functions and properties just like regular classes.
🧠 Conceptual
intermediate
2:00remaining
Type of anonymous object when assigned to a variable
Consider this Kotlin code snippet: val obj = object { val x = 10 } What is the static type of 'obj'?
AAny
BInt
CUnit
DThe exact anonymous object type with property 'x'
Attempts:
2 left
💡 Hint
When assigned to a val, the compiler infers the full anonymous object type.
❓ Predict Output
advanced
2:00remaining
Output when anonymous object is returned from a function
What is the output of this Kotlin code?
Kotlin
fun create() = object {
    val name = "Kotlin"
    fun greet() = "Hello, $name!"
}

val obj = create()
println(obj.greet())
ACompilation error: Cannot access greet() on anonymous object returned from function
BHello, $name!
CHello, Kotlin!
DRuntime error: Unresolved reference greet
Attempts:
2 left
💡 Hint
Functions returning anonymous objects have their type erased to Any unless explicitly typed.
🔧 Debug
advanced
2:00remaining
Why does this anonymous object code cause a compilation error?
Identify the cause of the compilation error in this Kotlin code: val obj: Any = object { fun sayHi() = "Hi" } println(obj.sayHi())
Kotlin
val obj: Any = object {
    fun sayHi() = "Hi"
}
println(obj.sayHi())
AAnonymous objects cannot have functions
BThe variable obj is typed as Any, which does not have sayHi() method
CMissing parentheses when calling sayHi
DCannot assign anonymous object to Any type
Attempts:
2 left
💡 Hint
Check the declared type of obj and what methods it exposes.
🚀 Application
expert
2:00remaining
Using anonymous objects to implement an interface
What is the output of this Kotlin code?
Kotlin
interface Speaker {
    fun speak(): String
}

val speaker = object : Speaker {
    override fun speak() = "I am anonymous"
}

println(speaker.speak())
ARuntime error: speak() not implemented
BCompilation error: anonymous object must implement all interface methods
CI am anonymous
DI am Speaker
Attempts:
2 left
💡 Hint
Anonymous objects can implement interfaces and override their methods.

Practice

(1/5)
1. What is an object expression in Kotlin?
easy
A. A named class declaration
B. A way to create an anonymous object with properties and functions
C. A function that returns a string
D. A variable declaration with a fixed value

Solution

  1. Step 1: Understand object expressions

    Object expressions create unnamed objects on the spot with properties and functions.
  2. Step 2: Differentiate from other options

    Named classes, functions, and variables are different concepts and do not create anonymous objects.
  3. Final Answer:

    A way to create an anonymous object with properties and functions -> Option B
  4. Quick Check:

    Object expression = anonymous object [OK]
Hint: Anonymous objects = quick unnamed objects [OK]
Common Mistakes:
  • Confusing object expressions with named classes
  • Thinking object expressions are functions
  • Assuming object expressions are variables
2. Which of the following is the correct syntax to create an anonymous object in Kotlin?
easy
A. val obj = object() { val x = 10 }
B. val obj = class { val x = 10 }
C. val obj = object { val x = 10 }
D. val obj = fun() { val x = 10 }

Solution

  1. Step 1: Recall Kotlin object expression syntax

    The correct syntax uses object { ... } without parentheses.
  2. Step 2: Check each option

    val obj = object { val x = 10 } matches the correct syntax. val obj = class { val x = 10 } uses class which is invalid here. val obj = fun() { val x = 10 } uses fun() which is a function, not an object. val obj = object() { val x = 10 } incorrectly adds parentheses after object.
  3. Final Answer:

    val obj = object { val x = 10 } -> Option C
  4. Quick Check:

    Correct syntax = object { ... } [OK]
Hint: Use 'object { }' without parentheses for anonymous objects [OK]
Common Mistakes:
  • Adding parentheses after 'object'
  • Using 'class' instead of 'object'
  • Confusing functions with object expressions
3. What will be the output of this Kotlin code?
val obj = object {
    val name = "Alice"
    fun greet() = "Hello, $name!"
}
println(obj.greet())
medium
A. Runtime error
B. Hello, name!
C. Compilation error
D. Hello, Alice!

Solution

  1. Step 1: Analyze the anonymous object

    The object has a property name with value "Alice" and a function greet() that returns "Hello, $name!".
  2. Step 2: Evaluate the print statement

    Calling obj.greet() returns "Hello, Alice!" which is printed.
  3. Final Answer:

    Hello, Alice! -> Option D
  4. Quick Check:

    obj.greet() = "Hello, Alice!" [OK]
Hint: Object properties accessed inside functions print correctly [OK]
Common Mistakes:
  • Expecting variable name printed instead of value
  • Thinking anonymous objects cause errors
  • Confusing string interpolation syntax
4. Identify the error in this Kotlin code using an object expression:
val obj = object {
    val x = 5
    fun printX() {
        println(y)
    }
}
medium
A. Property 'y' is not defined in the object
B. Missing parentheses after 'object'
C. Function printX() should return a value
D. Cannot use println inside object expressions

Solution

  1. Step 1: Check properties and functions inside the object

    The object defines property x but tries to print y which is not defined.
  2. Step 2: Understand the error cause

    Accessing undefined property y causes a compilation error.
  3. Final Answer:

    Property 'y' is not defined in the object -> Option A
  4. Quick Check:

    Undefined property access = error [OK]
Hint: Check all properties used inside object functions exist [OK]
Common Mistakes:
  • Assuming missing parentheses after 'object' cause error
  • Thinking functions must return a value
  • Believing println is disallowed inside objects
5. How can you use an object expression to create a one-time comparator for sorting a list of strings by length in Kotlin?
hard
A. list.sortedWith(object : Comparator<String> { override fun compare(a: String, b: String) = a.length - b.length })
B. list.sortedWith(object Comparator<String> { fun compare(a: String, b: String) = a.length - b.length })
C. list.sortedWith(object : Comparator<String> { fun compare(a: String, b: String) = a.length - b.length })
D. list.sortedWith(object Comparator<String> { override fun compare(a: String, b: String) = a.length - b.length })

Solution

  1. Step 1: Understand object expression with interface implementation

    To create a comparator, use object : Comparator<String> and override compare method.
  2. Step 2: Check syntax correctness

    list.sortedWith(object : Comparator<String> { override fun compare(a: String, b: String) = a.length - b.length }) correctly uses override fun compare. Options B and D miss the colon before interface or override keyword. list.sortedWith(object : Comparator<String> { fun compare(a: String, b: String) = a.length - b.length }) misses override keyword.
  3. Final Answer:

    list.sortedWith(object : Comparator<String> { override fun compare(a: String, b: String) = a.length - b.length }) -> Option A
  4. Quick Check:

    Correct syntax = object : Interface { override fun method() } [OK]
Hint: Use 'object : Interface { override fun method() }' for anonymous implementations [OK]
Common Mistakes:
  • Omitting colon before interface name
  • Missing override keyword on method
  • Using 'object Interface' instead of 'object : Interface'
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