Skip to content

Instantly share code, notes, and snippets.

@tedhagos
Created September 28, 2018 08:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tedhagos/6db172bf11f5ed5d3349f72139a0605f to your computer and use it in GitHub Desktop.
Save tedhagos/6db172bf11f5ed5d3349f72139a0605f to your computer and use it in GitHub Desktop.
TypeErasure.Kt
// Warning, this code won't compile in Kotlin
// it has problemss. Can you spot which line won't compile?
fun main(args: Array<String>) {
val mlist = listOf(Programmer("Ted"), Tester("Steph")) // (1)
val mprogs = mlist.typeOf<Programmer>() // (2)
mprogs.forEach { // (3)
println("${it.toString()} : ${it.javaClass.simpleName}")
}
}
fun <T> List<pass:[*]>.typeOf() : List<T> { // (4)
val retlist = mutableListOf<T>() // (5)
this.forEach {
if (it is T) { // (6)
retlist.add(it) // (7)
}
}
return retlist // (8)
}
open class Employee(val name:String) {
override fun toString(): String {
return name
}
}
class Programmer(name:String) : Employee(name) {}
class Tester(name:String) : Employee(name) {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment