Type inference is niet in alle gevallen perfect. Bijvoorbeeld het volgende:
code:
1
2
| charArrayOf('a', 'b', 'c').let(::String) // Werkt niet
charArrayOf('a', 'b', 'c').let { String(it) } // Gaat prima |
In Java zou zo'n constructie gewoon werken, niet dat dit een veel voorkomende situatie is (normaal gesproken zou je snel terugvallen op joinToString of iets dergelijks, maar ik kwam het toevallig afgelopen week tegen.
Ook is er in Kotlin nog geen makkelijke manier om Sequences parallel uit te voeren zonder je eigen boilerplate code er omheen te gooien. Natuurlijk is ook dit geen groot probleem, maar ten opzichte van de eenvoudigheid van Java's parallelStream is het toch wel een groot gelag.
Kotlin heeft geen static variabelen, behalve via companion objects of top level variabelen, dit zijn prima oplossingen maar maken het -naar mijn mening- net iets onduidelijker. Dit geldt helemaal voor companion objects, die zowel een virtue als een vice zijn. Neem de volgende situatie:
code:
1
2
3
4
5
6
7
8
9
| class SomeClass {
companion object {
const val SOME_CONSTANT = 5
}
fun a() = SOME_CONSTANT
}
const val SOME_CONSTANT = 3 |
Het is voor mij nu niet duidelijk welke constante gebruikt wordt in a(). Vanuit Java's perspectief zou de top level constante gebruikt moeten worden (immers worden deze functies/variabelen/constanten onderdeel van de class), echter blijkt de constante uit het companion object gebruikt te worden.
Het zijn van die kleine dingen, maar die zijn -wat mij betreft- toch net iets duidelijker en consistenter in Java. Maar zoals ik al zei, Kotlin staat nog in zijn kinderschoenen en elke update maakt het beter. Jetbrains zet grote stappen met de taal en het is naar mijn mening ook zeker een taal die in de toekomst meer marktaandeel inpikt van Java, wat je nu al ziet op het gebied van ontwikkeling van Android apps.
Overigens heb ook ik nog niet heel veel professioneel met Kotlin gedaan, het zijn vooral kleine projectjes. Ik ben echter wel benieuwd hoe Kotlin zich houdt in grotere projecten.
[
Voor 4% gewijzigd door
Lye op 22-12-2017 11:17
]