0
0
Kotlinprogramming~5 mins

Star projection for unknown types in Kotlin

Choose your learning style9 modes available
Introduction

Star projection helps you work with generic types when you don't know the exact type. It lets you use a generic class safely without specifying the type.

When you want to accept any type of generic object without caring about its specific type.
When you call a function that uses generics but you don't know or need the exact type.
When you want to read from a generic collection but don't want to write to it.
When you want to avoid type errors while working with unknown generic types.
Syntax
Kotlin
val list: List<*> = listOf(1, "two", 3.0)

The star * means "some unknown type".

You can read elements as Any? but cannot add elements safely.

Examples
You can get elements as Any? but cannot add new elements.
Kotlin
val anyList: List<*> = listOf(1, 2, 3)
val first: Any? = anyList[0]
This function accepts any list regardless of its element type.
Kotlin
fun printList(list: List<*>) {
    for (item in list) {
        println(item)
    }
}
You can use star projection to hold mixed types safely.
Kotlin
val mixedList: List<*> = listOf("hello", 42, 3.14)
println(mixedList.size)
Sample Program

This program shows how to use star projection to print lists of unknown types safely.

Kotlin
fun printUnknownList(list: List<*>) {
    for (item in list) {
        println(item)
    }
}

fun main() {
    val numbers = listOf(1, 2, 3)
    val words = listOf("apple", "banana")
    val mixed = listOf(1, "two", 3.0)

    printUnknownList(numbers)
    printUnknownList(words)
    printUnknownList(mixed)
}
OutputSuccess
Important Notes

You cannot add elements to a collection with star projection because the type is unknown.

Star projection is useful for reading data safely when you don't know the exact generic type.

Summary

Star projection * means an unknown generic type.

It allows safe reading but restricts writing to generic collections.

Use it when you want to work with generics without specifying exact types.