séquence
Cet article donne principalement plusieurs exemples de la façon dont Kotlin peut améliorer le code Java
Cordes littérales et modèles
Chaîne Valeur littérale
@Test Fun TestStringLiterals () {val a = "" "if (a> 1) {| return a |}" "". Trimmargin () println (a) val b = "" "foo bar" ".Avec les littéraux de cordes, vous n'avez pas à faire autant d'efforts pour épisser les chaînes si vous écrivez SQL.
Modèle de chaîne
@Test Fun TestStringTemplate () {val name = "Hello Kotlin" println ("Hello, $ name!"); Val data = listof (1,2,3) println ("Hello, $ {data [0]}!")}Ce modèle de chaîne est encore plus puissant, équivalent à un freemarker intégré et n'a pas besoin de transmettre des valeurs variables manuellement
Obtenez l'index actuel dans la boucle pour
@Test Fun TestForEachIndex () {Val items = listof ("Apple", "banana", "kiwifruit") for (index in items.Indices) {println ("item at $ index est $ {items [index]}")}}En Java, si vous voulez obtenir un index pour chaque boucle, vous devez déclarer l'index à l'extérieur et le compter vous-même. C'est trop gênant
classe de données
// Générer Getter / Setter, égaux, HashCode, ToString, Copy, etc. // Setter uniquement Classe de données Client (Nom Val: String, Val Email: String) @Test Fun TestDataclass () {Val Customer = Customer ("Admin", "[email protected]") Println (Customer)}} Java déclare toujours Getter / Setter. L'avantage est que vous pouvez trouver ces méthodes dans l'IDE qui appellent Getter / Setter;
Bien que Lombok puisse générer automatiquement Getter / Setter, et l'annotation @DATA peut également générer des méthodes égales / hashcode, Lombok n'est pas pratique pour trouver ces méthodes dans l'IDE, qui appelle Getter / Setter; La classe de données de Kotlin vous aide à résoudre ces problèmes
Sécurité nul
@Test Fun TestifNotNull () {val files = file ("test"). ListFiles () println (files? .Size) // null} @test fun TestifNotNullLandelSe () {Val files = file ("test"). ListFiles () println (files? .Size?: "Vide")}Cette sécurité nulle est si utile qu'elle est un peu concise que l'expression ternaire de Java. Lorsque l'expression est vraie, vous n'avez pas besoin de répéter le contenu à retourner, écrivez simplement la partie ELSE.
La sécurité nul est plus utile lors des appels en streaming / enchaînés
// Si l'un des `personnels 'ou` Person.Department` est vide, la fonction ne sera pas appelée: personne? .Département? .Head = managerspool.getManager ()
résumé
Cet article ne donne que quelques exemples de Kotlin qui peuvent améliorer le code Java. Kotlin est trop puissant et l'objectif est de remplacer Java. De nombreux modèles peuvent voir l'ombre de Scala, mais il y a aussi beaucoup de magie noire, et la courbe d'apprentissage est un peu tremblante, mais c'est OK si vous n'utilisez pas de grammaire trop avancée.
Référence associée: https://www.kotlincn.net/docs/reference/