Sortie de Kotlin 1.3.70 avec de nouvelles fonctionnalités d'annotations

Par:
fredericmazue

jeu, 12/03/2020 - 14:38

JetBrains vient d'annoncer la sortie de Kotlin 1.3.70. Il ne s'agit pas d'une évolution majeure du langage. Mais on remarque des nouveautés intéressantes. Toutes les nouveautés sont récapitulées dans l'annonce de JetBrains.

Des changements ont été apportés à la librairie standard, notamment en ce qui concerne StringBuilder ou le travail avec KCLass. Ces changements sont pour le moment expérimentaux et pour l'occasion JetBrains a renommé les annotations expérimentales. JetBrains a décidé d'élargir la portée de ce mécanisme, car quelque chose étant à l'état expérimental n'est pas la seule raison d'exiger le consentement pour utiliser les API. Par exemple, une API peut être interne ou avoir certaines restrictions. JetBrains a renommé les annotations pour refléter cela: les noms @OptIn et @RequiresOptIn ont remplacé @UseExperimental et @Experimental, en conséquence l'argument du compilateur -Xuse-experimental a été renommé en -Xopt-in.

Toujours en ce qui concerne les annotations, Kotlin peut désormais générer des annotations de type dans le bytecode JVM (version cible 1.8+), afin qu'elles deviennent disponibles au moment de l'exécution. Cette fonctionnalité était demandée par la communauté depuis un certain temps, car elle facilite l'utilisation de certaines bibliothèques Java existantes et donne plus de possibilités à ceux qui créent de nouvelles bibliothèques.

Dans l'exemple suivant, l'annotation @Foo sur le Stringtype peut être émise vers le bytecode puis utilisée par le code de la bibliothèque:

@Target(AnnotationTarget.TYPE)
annotation class Foo

class A {
    fun foo(): @Foo String = "OK"
}