Rychlý nahlédnutí do Java vs Kotlin

Kotlin je nový programovací jazyk od JetBrains, výrobce nejlepších světových IDE.

Minulý rok kolem této doby společnost Google oznámila Kotlin jako další oficiální jazyk pro vývoj aplikací pro Android na Google I / O'17.

V jednom roce je tolik článků o Kotlin a vývojáři migrují do Kotlin rychlým tempem.

Ve společnosti Airtel Product Engineering vždy experimentujeme s novými technologiemi a přijímáme je do našich produktů. Následuje moje analýza na Kotlin.

Na rozdíl od většiny článků, které popisují jazyk, se vyhnu příliš velkému programování. Místo toho budu používat prostou angličtinu, aby to pomohlo osvěžovačům.

Začněme s některými mými současnými oblíbenými.

  1. Definování proměnných:

V Javě máme finále pro proměnnou pouze pro čtení.

// JAVA
konečný znak a = „A“; // Pouze pro čtení typu „Char“
char b = 'B'; // Typ proměnného `Char`
b = 'C';

V Kotlinu máme hodnotu pro proměnnou pouze pro čtení a proměnnou pro proměnnou proměnnou.

// KOTLIN
val a = 'A' // Je odvozen pouze typ „Char“
var b = 'B' // Je odvozen proměnný typ "Char"
b = 'C'

2. Šablony řetězců:

V Javě jsme pro formátování řetězců použili String.format

// JAVA
int a = 20;
final String t1 = String.format ("Amy věk je% d", a);
a = 25;
final String t2 = String.format ("% s, nyní je% d.", t1.replace ("is", "was"), a);

V Kotlinu můžeme použít výraz v šabloně.

// KOTLIN
var a = 20
val t1 = "Amy věk je $ a"
a = 25
val t2 = "$ {t1.replace (" is "," was ")}, nyní je $ a."

Podívejte se na rozdíl, Kotlin je tolik čitelný a čistý.

3. Nulová bezpečnost (Nulovatelné a nenulové typy)

V Javě je ve výchozím nastavení vše nulové. Proto jsme vyžadovali mnoho kontrol, abychom se vyhnuli NPE

// JAVA
String name = null;

// Bezpečný způsob, jak se vyhnout NPE
if (null! = name) {
    int length = name.length ();
}
// Hodí NPE
int length2 = name.length ();

Cílem systému typu Kotlin je vyloučit nebezpečí nulových odkazů z kódu, známého také jako chyba v miliardách dolarů.

Běžný String nemůže držet null, ale abychom umožnili nullable String, musíme dát typ jako String?

// KOTLIN
název val: String = "Java"
name = null // Chyba kompilátoru
val lastName: String? = "Kotlin"
lastName = null // Funguje dobře

Při přístupu k vlastnostem proměnných nebude normální řetězec házet NPE, ale řetězec? hodí NPE.

Existuje několik způsobů, jak tomu zabránit:

  • Použití normální kontroly if-else
// Normální kontrola
val length = if (lastName! = null) lastName.length else -1
  • Používáte SafeCall? Operátor (jedna z nejlepších funkcí v Kotlině)
// Bezpečné volání
val length = lastName? .length // Výstup: lastName length nebo null

Toto vrátí lastName.length, pokud lastName není null, jinak null. Bezpečná volání? jsou opravdu užitečné v řetězci odkazů, jako je emp?. addr? .house Pokud je některá z vlastností null, vrátí null, ale ne NPE.

Pokud se nechceme vrátit null a chceme vrátit nějakou výchozí hodnotu. Můžeme použít Elvis Operator?:

// Používání Elvis Operator
val length = lastName? .length?: -1 // Výstup: lastName length nebo -1
  • Použitím !! Operátor (pro milovníky NPE)
// Použitím !! Operátor
val length = lastName !!. length // Vyhoďte NPE, pokud je lastName null

4. Typ Check & Automatic Casting

V Javě používáme instanci ke kontrole typu, a pak musíme napsat cast pro přístup k jejím vlastnostem.

// JAVA
if (název instance String) {
    int length = ((String) name) .length ();
}

V Kotlinu používáme pro kontrolu typu a kompilátor inteligentně zadává obsazení. Úžasné

// KOTLIN
if (jméno je String) {
    val length = name.length
}

Více informací naleznete zde.

5. Při vyjádření

Například: Chci najít objekt 1 nebo 5 nebo řetězec nebo jiný typ.

V Javě musíme k provedení výše uvedené úlohy použít instanci a přepínač.

// JAVA
private String switchExample (Název objektu) {
    if (název instanceof Integer) {
        Integer tempInt = (celé číslo) jméno;
        switch (tempInt) {
            případ 1:
            případ 5:
                návrat "1 nebo 5";
            výchozí:
                návrat "Ne 1 nebo 5";
        }
    } else if (name instanceof String) {
        návrat "String";
    }
    návrat "Ne Int nebo String";
}

V Kotlině, když je výraz tak jednoduchý. Je to automatický typ obsazení a můžeme v něm použít tolik výrazů. Navíc je to tolik čitelné.

// KOTLIN
fun whenExample (jméno: Jakékoli): String =
        kdy (jméno) {
            1, 5 -> „1 nebo 5“
            je Int -> „Ne 1 nebo 5“
            je String -> "String"
            jinde -> „Není Int nebo String“
        }

6. Třídy

V Javě musíme vytvořit getter a setters pro přístup k vlastnostem ve třídě.

// JAVA
zákazník veřejné třídy {
    soukromé jméno řetězce;

    veřejný zákazník (String name) {
        this.name = name;
    }

    public String getName () {
        návratové jméno;
    }

    public void setName (String name) {
        this.name = name;
    }
}

V Kotlině už žádné getery a setry. Můžeme však vytvořit, pokud chcete nastavit vlastní.

// KOTLIN
třída Zákazník (název var: String)

To je nejlepší v Kotlin. Když jsem to viděl, napadlo mi jedno slovo WOW !!! Je to úžasné

Takže jen krátký pohled na některé věci, které zlepšují náš život. Děkuji za přečtení mého prvního příspěvku na médiu. V odkazu máte přístup ke všem výše uvedeným fragmentům kódu.

Pokud chcete začít používat Kotlin, podívejte se do jejich oficiální dokumentace. Je to opravdu dobré.

Chcete-li zobrazit další aktualizace, sledujte mě na médiu nebo Twitteru. Nechte své myšlenky v sekci komentářů nebo mě kontaktujte na Twitteru a já budu přidávat do seriálu.

Pokud se vám líbí, nezapomeňte tleskat. Pokud podržíte tlačítko tleskání, můžete nechat další tleskání.