Un cop d'ull ràpid a Java vs Kotlin

Kotlin és un nou llenguatge de programació de JetBrains, el creador dels millors IDE del món.

L'any passat, Google va anunciar Kotlin, com un altre idioma oficial per al desenvolupament d'aplicacions per a Android a Google I / O17.

En un any, hi ha tants articles sobre Kotlin i els desenvolupadors migren cap a Kotlin a un ritme ràpid.

A Airtel Product Engineering, sempre estem experimentant amb les noves tecnologies i les adoptem als nostres productes. A continuació s’analitza la meva anàlisi sobre Kotlin.

A diferència de la majoria d’articles que descriuen un llenguatge, evitaré utilitzar massa termes de programació. En lloc d'això, només faré servir un anglès en ordre, de manera que sigui útil per als actualitzadors.

Comencem amb alguns dels meus preferits actuals.

  1. Definició de variables:

A Java, tenim variables per a només lectura de variables.

// JAVA
final char a = "A"; // Només de lectura tipus Char
char b = 'B'; // Tipus `Char 'mutable
b = 'C';

A Kotlin, tenim val per a Variable només de lectura i var per a variable.

// KOTLIN
val a = 'A' // Es dedueix només de lectura el tipus Char
var b = "B" // Es dedueix el tipus "Char" mutable
b = "C"

2. Plantilles de cadena:

A Java, hem utilitzat String.format per formatar les cadenes

// JAVA
int a = 20;
String final t1 = String.format ("L'edat d'Amy és% d", a);
a = 25;
final String t2 = String.format ("% s, ara és% d.", t1.replace ("és", "was"), a);

A Kotlin, podem utilitzar l’expressió en plantilla.

// KOTLIN
var a = 20
val t1 = "L'edat d'Amy és $ a"
a = 25
val t2 = "$ {t1.replace (" és "," era ")}, ara és $ a."

Vegeu la diferència, Kotlin és tan llegible i net.

3. Seguretat nul·la (tipus nul·la i tipus no nuls)

Per defecte, a Java, tot és nul. Per tant, vam requerir molts controls per evitar el NPE

// JAVA
Nom de la cadena = null;

// Forma segura d’evitar el NPE
if (null! = nom) {
    int longitud = nom.length ();
}
// Llança NPE
int longitud2 = nom.length ();

El sistema de tipus de Kotlin té l’objectiu d’eliminar el perill de referències nul·les del codi, també conegut com a error de milers de dòlars.

Una cadena regular no pot contenir nul, però per permetre que la cadena no nul·la, hem de donar tipus com a Cadena?

// KOTLIN
nom de val: String = "Java"
name = null // Error del compilador
val lastName: Cadena? = "Kotlin"
lastName = null // Funciona bé

Mentre s’accedeix a les propietats de variables, la cadena regular no llançarà NPE sinó String? llançarà NPE.

Hi ha algunes maneres d’evitar-ho:

  • Utilitzant l'opció Comprovar normal
// Comprovació normal
val longitud = if (lastName! = null) lastName.length else -1
  • Feu servir SafeCall ?. Operador (Una de les millors funcions de Kotlin)
// Trucada segura
val longitud = lastName? .length // Sortida: longitud LastName o null

Això retorna lastName.length, si lastName no és nul, en cas contrari nul. Trucades segures ?. són realment útils a la cadena de referències com emp? .addr? .house Si alguna de les propietats és nul·la, es retornarà nul, però no NPE.

Si no volem tornar nuls i volem retornar algun valor per defecte. Podem utilitzar Elvis Operator ?:

// Utilitzant Elvis Operator
val longitud = lastName? .length?: -1 // Sortida: lastName length o -1
  • Utilitzant !! Operador (per als amants del NPE)
// Utilitzant !! Operador
val longitud = lastName !! .longada // Llançar NPE, si lastName és nul

4. Escriviu Comprovació i colada automàtica

A Java, fem servir instanceof per comprovar el tipus, i després cal escriure cast per accedir a les seves propietats.

// JAVA
if (nom de la instància de la cadena) {
    longitud int = ((Cadena) nom) .length ();
}

A Kotlin, utilitzem per comprovar el tipus, i un compilador de manera intel·ligent escriu-lo. Impressionant

// KOTLIN
if (el nom és String) {
    val longitud = name.length
}

Més informació aquí.

5. Quan és expressió

Per exemple: vull trobar que l'objecte sigui 1 o 5 o Cadena o Altre tipus.

A Java, hem d’utilitzar instanceof & switch per realitzar la tasca anterior.

// JAVA
private String switchExample (nom de l'objecte) {
    if (nom instància de tot) {
        Integer tempInt = nom (enter);
        commutador (tempInt) {
            cas 1:
            cas 5:
                retorna "1 o 5";
            predeterminat:
                retorna "No 1 o 5";
        }
    } else if (nom de la instància de la cadena) {
        torna "Cadena";
    }
    retorna "No Int o Cadena";
}

A Kotlin, quan l’expressió la fa tan senzilla. Escriu de forma automàtica i podem utilitzar tantes expressions que hi ha al seu interior. A més, és molt llegible.

// KOTLIN
diversió quan Exemple (nom: Qualsevol): Cadena =
        quan (nom) {
            1, 5 -> "1 o 5"
            és Int -> "No 1 ni 5"
            és Cadena -> "Cadena"
            else -> "No Int o cadena"
        }

6. Classes

A Java, hem de crear getter i setters per accedir a les propietats d'una classe.

// JAVA
client públic de classe {
    nom de cadena privada;

    Client públic (nom de la cadena) {
        this.name = nom;
    }

    public String getName () {
        nom de retorn;
    }

    public void setName (Nom de la cadena) {
        this.name = nom;
    }
}

A Kotlin, ja no hi ha getters i setters. Però podem crear, si voleu definir-ne de personalitzats.

// KOTLIN
Clients de classe (nom var: String)

Això és millor a Kotlin. Quan vaig veure això, em va venir al cap una paraula WOW !!! És impressionant

Així doncs, només cal fer una breu revisió d'algunes de les coses que fan la nostra vida millor. Gràcies per llegir la meva primera publicació a mitjà. Podeu accedir a tots els fragments de codi anteriors a l’enllaç.

Si voleu començar a utilitzar Kotlin, consulteu la documentació oficial. És realment bo.

Per veure més actualitzacions, simplement seguiu-me al mitjà o al Twitter. Deixa els teus pensaments a la secció de comentaris o arriba a mi a Twitter i continuaré afegint-los a la sèrie.

Si t’agrada, recorda aplaudir. Si manteniu premut el botó de clap, podeu deixar més claps.