Kiire pilk Java vs Kotlini

Kotlin on uus programmeerimiskeel JetBrainsilt, maailma parimate IDEde loojalt.

Eelmisel aastal umbes sel ajal kuulutas Google välja Kotlini kui teise rakenduse Google I / O’17 Androidi rakenduste arendamise ametliku keele.

Ühe aasta jooksul on Kotlini kohta nii palju artikleid ja arendajad rändavad Kotlinisse kiiresti.

Airteli tootearenduses katsetame alati uusi tehnoloogiaid ja rakendame neid oma toodetesse. Järgneb minu analüüs Kotlini kohta.

Erinevalt enamikust artikleid, mis kirjeldavad keelt, väldin ma liiga palju programmeerimistingimuste kasutamist. Selle asemel kasutan lihtsalt lihtsat inglise keelt, nii et värskendajatest oleks sellest abi.

Alustame mõne minu praeguse lemmikuga.

  1. Muutujate määratlemine:

Java-keeles on meil loend ainult muutuja jaoks lõplik.

// JAVA
lõplik char a = 'A'; // Loe ainult `Char` tüüpi
char b = 'B'; // Muudetav "Char" tüüp
b = 'C';

Kotlinis on meil valimisvõimalus ainult lugemismuutuja ja muutuva muutuja jaoks var.

// KOTLIN
val a = 'A' // Siit järeldatakse ainult lugemisvõimalust
var b = 'B' // järeldatav muutuv `Char` tüüp
b = 'C'

2. Stringimallid:

Java-s kasutasime Stringide vormindamiseks String.format

// JAVA
int a = 20;
lõplik string t1 = keelpillivorming ("Amy vanus on% d", a);
a = 25;
lõplik string t2 = string.vorming ("% s, nüüd on% d.", t1.korda ("on", "oli"), a);

Kotlinis saame mallis kasutada avaldist.

// KOTLIN
var a = 20
val t1 = "Amy vanus on $ a"
a = 25
val t2 = "$ {t1.replace (" on "," was ")}, nüüd on $ a."

Vaadake erinevust, Kotlin on nii palju loetav ja puhas.

3. Kehtetu ohutus (tühised tüübid ja mitte-tühised tüübid)

Java-s pole vaikimisi kõik null. Niisiis, NPE vältimiseks nõudsime palju kontrolle

// JAVA
Stringi nimi = null;

// Ohutu viis NPE vältimiseks
if (null! = nimi) {
    int pikkus = nimi.pikkus ();
}
// viskab NPE
int pikkus2 = nimi.pikkus ();

Kotlini tüübisüsteemi eesmärk on kaotada koodist nullviidete oht, tuntud ka kui miljardit dollarit tekitav viga.

Tavaline keelpill ei saa olla null, kuid nullitava stringi lubamiseks peame andma tüübi String?

// KOTLIN
val nimi: String = "Java"
nimi = null // Koostaja viga
val lastName: string? = "Kotlin"
lastName = null // Töötab hästi

Muutujate omadustele juurdepääsu saamiseks ei viska tavaline string mitte NPE-d, vaid stringi? viskab NPE.

Selle vältimiseks on mõned viisid:

  • If-else tavakontrolli kasutamine
// Tavaline kontroll
val pikkus = if (lastName! = null) lastName.length else -1
  • Kas kasutate rakendust SafeCall? Operaator (üks parimaid omadusi Kotlinis)
// Turvaline kõne
val pikkus = lastName? .length // Väljund: lastName pikkus või null

See tagastab lastName.length, kui lastName pole null, vastasel juhul null. Ohutud kõned ?. on tõesti kasulikud viidete ahelas nagu emp? .addr? .house. Kui mõni omadustest on null, siis tagastatakse see null, kuid mitte NPE.

Kui me ei taha tagastada nulli ja tahame tagastada mõnda vaikeväärtust. Kas me saame kasutada Elvise operaatorit ?:

// Elvise operaatori kasutamine
val pikkus = lastName? .length?: -1 // Väljund: lastName pikkus või -1
  • Kasutades !! Operaator (NPE armastajatele)
// Kasutades !! Operaator
val pikkus = lastName !! .pikkus // Viska NPE, kui lastName on null

4. Tippige Kontrolli ja automaatne ülekandmine

Java-s kasutame tüübi kontrollimiseks instanceofi ja seejärel peame selle omaduste juurde pääsemiseks tippima cast.

// JAVA
if (Stringi nimi esinemisjuhis) {
    int pikkus = ((stringi) nimi) .length ();
}

Kotlinis kontrollime tüübi kontrollimist ja kompilaator kirjutab nutikalt. Vinge

// KOTLIN
if (nimi on String) {
    val pikkus = nimi.pikkus
}

Lisateavet leiate siit.

5. Kui väljend

Näite jaoks: ma tahan leida, et objekt on 1 või 5 või string või mõni muu tüüp.

Java-s peame ülaltoodud ülesande täitmiseks kasutama instanceof & switchi.

// JAVA
privaatne stringi lülitiNäide (objekti nimi) {
    if (täisarve nimi) {
        Täisarv tempInt = (täisarv) nimi;
        lüliti (ajutine) {
            1. juhtum:
            5. juhtum:
                tagastage "1 või 5";
            vaikimisi:
                tagastage "Ei ole 1 või 5";
        }
    } else if (Stringi nimi näiteks) {
        tagasi "String";
    }
    tagasi "Ei ole int või keelpill";
}

Kotlinis, kui väljendus teeb selle nii lihtsaks. See on automaatne tüüpi ülekandmine ja me võime selle sees kasutada nii palju väljendeid. Lisaks on see nii palju loetav.

// KOTLIN
lõbus, kui näide (nimi: suvaline): string =
        millal (nimi) {
            1, 5 -> "1 või 5"
            on keskmine -> "pole 1 või 5"
            on keel -> "keel"
            muu -> "Ei ole int või keel"
        }

6. klassid

Java-s peame looma klassi atribuutidele juurdepääsu saamiseks getterid ja setterid.

// JAVA
avaliku klassi klient {
    privaatne keelnimi;

    avalik klient (stringinimi) {
        see.nimi = nimi;
    }

    avalik stringi getName () {
        tagasi nimi;
    }

    public void setName (stringi nimi) {
        see.nimi = nimi;
    }
}

Kotlinis pole enam gettereid ja settereid. Kuid me saame luua, kui soovite seada kohandatud.

// KOTLIN
klassi klient (var nimi: string)

See on kõige parem Kotlinis. Kui ma seda nägin, tuli üks sõna meelde WOW !!! See on fantastiline

See on vaid põgus pilk mõnele asjale, mis meie elu paremaks muudab. Täname, et lugesite minu esimest keskmises postitust. Pääsete juurde kõigile ülaltoodud koodilõikudele lingil.

Kui soovite hakata Kotlinit kasutama, tutvuge nende ametliku dokumentatsiooniga. See on tõesti hea.

Uute värskenduste nägemiseks järgige mind lihtsalt meediumil või Twitteris. Jäta oma mõtted kommentaaride sektsiooni või jõua minuni Twitteris ja ma jätkan sarja täiendamist.

Kui teile meeldib, pidage meeles, et plaksutate. Kui hoiate plaksutamisnuppu, võite jätta rohkem plaksutamisi.