Ceci est un article pour vous dire que j'étais très content de la transition de Java vers Kotlin.
J'avais l'habitude de programmer en Java il y a quelque temps. Mais Java a ses inconvénients. C'est, par exemple:
: avertissement: il s'agit d'un article sur la migration depuis Java. JavaScript est un langage complètement différent. S'il vous plaît soyez prudente.
NullPointerException
L'API peut renvoyer null comme valeur de retour ou passer null comme argument. Le premier peut être évité en utilisant la classe Optional
Lors de la déclaration d'une variable, décrivez le type tel que List <String> words
. Cependant, ce serait bien si nous pouvions le déduire. Vous pouvez maintenant utiliser var
, mais vous ne pouvez pas le faire pour les champs d'instance, etc.
En Java, vous devez écrire un getter / setter pour chaque encapsulation, ce qui est un peu redondant. Les constructeurs de classes et les surcharges sont assez fastidieux.
En Java, lors de la création d'une méthode (fonction d'ordre supérieur) qui reçoit une fonction, telle que Function <T, R> Vous devez écrire un type légèrement plus long. Il a une convention de dénomination fixe, mais il est toujours difficile à lire.
Si la grammaire était complètement différente lors de la migration de la langue, elle ne vous serait pas familière. Il peut s'agir de programmation dynamique ou fonctionnelle.
Si le nouveau langage de programmation de destination est complètement incompatible, cela prendra beaucoup de temps. Si possible, j'aimerais que vous utilisiez les programmes Java existants.
Kotlin sépare les types qui peuvent contenir null et les types qui n'en contiennent pas. Chaîne?
Peut contenir null. String
ne peut pas contenir null.
En Java, les classes suivantes
public class Pen {
private int ink;
public Pen(int ink) {
setInk(ink);
}
public int getInk() {return ink;}
public void setInk(int ink) {
if (ink < 0)
throw new IllegalArgumentException("L'argument est égal ou inférieur à 0. Valeur spécifiée:" + ink);
this.ink = ink;
}
}
Chez Kotlin
class Pen(ink: Int = 0) {
var ink:Int = ink
set(value) {
if (ink < 0)
throw IllegalArgumentException("L'argument est égal ou inférieur à 0. Valeur spécifiée:${value}")
field = value
}
}
Appelez simplement. Si le passeur n'est pas coché,
class Pen(var ink:Int)
Seulement. Si vous suivez les conventions de dénomination getXXX et setXXX, vous pouvez y accéder comme un champ comme pen.ink
. À propos, getter / setter est généré au moment de la compilation pour le champ défini précédemment dans Kotlin.
Vous pouvez omettre la partie : Int
du type de variable en l'initialisant ensemble. Pour la programmation fonctionnelle, String-> Int
est aussi simple que Haskell.
En fait, Kotlin est converti en fichier de classe lors de sa compilation. En d'autres termes, il fonctionne sur JVM comme Java. Kotlin et Java peuvent coexister, et Kotlin peut utiliser des bibliothèques Java, en hériter, et vice versa.
J'utilise un IDE appelé IntelliJ. Il a une fonction pour convertir Java en Kotlin (fichiers existants et copier / coller), ce qui est très utile. Les langages qui fonctionnent sur JVM incluent Scala, Groovy et Ruby (jRuby), mais je ne suis pas très familier avec la syntaxe de Ruby, Scala est lent à compiler et Groovy a choisi Kotlin parce qu'il est dynamique. Maintenant, allons ** pour ** migrer ** vers Kotlin ** (Dajare).
Recommended Posts