Generic functions

 

Let's take a look at the example GenericFunctions.kt and see how Kotlin is dealing with generic functions:

 

abstract class Engine {

abstract val power: Long

 

override fun toString(): String{

return "Engine(power=$power)"

}

}

 

class RocketEngine : Engine() {

override val power: Long

get() = 1000

}

 

class TruckEngine : Engine() {

override val power: Long

get() = 100

}

 

class EngineDiagnostics {

fun <T : Engine> checkEngine(engine: T) {

println(engine)

}

}

 

fun tryGenericFunctions(){

val truckEngine = TruckEngine()

val rocketEngine = RocketEngine()

val diagnostics = EngineDiagnostics()

diagnostics.checkEngine(truckEngine)

diagnostics.checkEngine(rocketEngine)

}

 

Console output:

 

Engine(power=100)

Engine(power=1000)