What are extension functions? Give an example?
#kotlin#extension-functions
Answer
Overview
Extension functions allow adding new functions to existing classes without inheritance.
Syntax
kotlinfun ClassName.functionName(params): ReturnType { // this refers to the receiver object }
String Extensions
kotlin// Add custom function to String fun String.isEmail(): Boolean { return this.contains("@") && this.contains(".") } // Usage val email = "user@example.com" if (email.isEmail()) { println("Valid email") }
Int Extensions
kotlinfun Int.isEven(): Boolean = this % 2 == 0 val num = 4 println(num.isEven()) // true
List Extensions
kotlinfun <T> List<T>.secondOrNull(): T? { return if (this.size >= 2) this[1] else null } val list = listOf(1, 2, 3) println(list.secondOrNull()) // 2
Context Extensions
kotlinfun Context.showToast(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } // In Activity showToast("Hello!") // Instead of Toast.makeText(...)
Extension Properties
kotlinval String.lastChar: Char? get() = if (this.isNotEmpty()) this[length - 1] else null println("Kotlin".lastChar) // n
Comparison with Java
Java - Utility Class
javapublic class StringUtils { public static boolean isEmail(String str) { return str.contains("@"); } } StringUtils.isEmail(email); // Verbose
Kotlin - Extension
kotlinfun String.isEmail() = contains("@") email.isEmail() // Natural
Use Cases: Adding utilities to framework classes, improving API readability, domain-specific operations.