Kotlin Generic Functions
Take your programming skills to the next level with interactive lessons and real-world projects.
Explore Coddy →Generic functions in Kotlin allow developers to write flexible and reusable code that can work with different data types. They provide a way to create functions that can operate on various types without sacrificing type safety.
Syntax and Basic Usage
To define a generic function in Kotlin, you use angle brackets <> after the function name to specify type parameters. Here's a simple example:
fun <T> printItem(item: T) {
println(item)
}
In this example, T is a type parameter that can represent any type. You can call this function with different types:
printItem("Hello") // Prints: Hello
printItem(42) // Prints: 42
printItem(3.14) // Prints: 3.14
Multiple Type Parameters
Kotlin generic functions can have multiple type parameters. This is useful when you need to work with different types within the same function:
fun <T, U> printPair(first: T, second: U) {
println("First: $first, Second: $second")
}
printPair("Age", 30) // Prints: First: Age, Second: 30
printPair(3.14, true) // Prints: First: 3.14, Second: true
Type Constraints
You can add type constraints to generic functions to restrict the types that can be used. This is done using the : operator followed by the upper bound:
fun <T : Comparable<T>> findMax(a: T, b: T): T {
return if (a > b) a else b
}
println(findMax(5, 10)) // Prints: 10
println(findMax("apple", "banana")) // Prints: banana
In this example, T is constrained to types that implement the Comparable interface.
Benefits of Generic Functions
- Type Safety: Generics provide compile-time type checking, reducing runtime errors.
- Code Reusability: Write functions that work with multiple types without duplication.
- Flexibility: Easily adapt functions to work with new types as your codebase evolves.
Best Practices
- Use meaningful names for type parameters (e.g.,
Tfor type,Efor element). - Apply type constraints when you need to ensure certain operations are available on the generic type.
- Consider using Kotlin Inline Functions with generics for performance optimization in certain scenarios.
- Combine generics with Kotlin Extension Functions to create powerful, reusable utility functions.
Related Concepts
To deepen your understanding of generics in Kotlin, explore these related topics:
By mastering generic functions, you'll be able to write more flexible and maintainable Kotlin code, adapting to various data types while ensuring type safety throughout your applications.