Skip to content

Instantly share code, notes, and snippets.

@abreslav
Created March 20, 2014 17:28
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save abreslav/9669252 to your computer and use it in GitHub Desktop.
Save abreslav/9669252 to your computer and use it in GitHub Desktop.
// Why do we need variance
// Invariant class List, just like in Java
class List<T> { /* normal list */ }
fun printContents(list: List<Any>) {
for (item in list) {
println(item)
}
}
fun test() {
val list: List<String> = listOf("a", "b")
printContents(list) // ERROR: List<String> is not a subtype of List<Any>
}
@abreslav
Copy link
Author

Just for the record. On the matter of variance in Java (which is called use-site variance): https://prezi.com/lnw_oiv1gs-j/java-8-vs-kotlin/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment