Created
March 20, 2014 17:28
-
-
Save abreslav/9669252 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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> | |
} |
Ok. Andrey, thank you very much for participation and for your time. It was very interesting and informative discussion. I hope we will have a chance to continue it later.
I'm following your project with interest. Albeit we have different points of view in some controversial problems, I must admit JetBrains making the best products in its market. And there is no doubt, Kotlin is one of them.
P.S. I'm going to add you on my Skype contact list, so we will be in touch.
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
@llogiq I agree with your point. Actually even the current implementation of Java is covering 95% of all practical use cases.