Бърз поглед в Java срещу Котлин

Kotlin е нов език за програмиране от JetBrains, производител на най-добрите IDE в света.

Миналата година около това време Google обяви Kotlin като друг официален език за разработка на приложения за Android в Google I / O’17.

За една година има толкова много статии за Kotlin и разработчиците мигрират към Kotlin с бързи темпове.

В Airtel Product Engineering, ние винаги експериментираме с нови технологии и ги прилагаме в нашите продукти. Следва моят анализ на Котлин.

За разлика от повечето статии, които описват език, аз ще избегна използването на твърде много термини за програмиране. Вместо това просто ще използвам обикновен английски, така че да е полезно за свеж.

Нека започнем с някои от настоящите ми любими.

  1. Дефиниране на променливи:

В Java имаме финал за променлива само за четене.

// JAVA
final char a = „A“; // Само за четене `Char '
char b = 'B'; // Изменяем тип `Char`
b = 'C';

В Котлин имаме вал за променлива само за четене и вар за променлива променлива.

// KOTLIN
val a = 'A' // Само за четене се извежда тип "Char"
var b = 'B' // Сменя се типът Char '
b = 'C'

2. Шаблони за низове:

В Java използвахме String.format за форматиране на Strings

// JAVA
int a = 20;
final String t1 = String.format ("Възрастът на Ейми е% d", a);
a = 25;
final String t2 = String.format ("% s, сега е% d.", t1.replace ("е", "беше"), a);

В Котлин можем да използваме израз в шаблон.

// KOTLIN
var a = 20
val t1 = "Възрастът на Ейми е $ a"
a = 25
val t2 = "$ {t1.replace (" е "," беше ")}, сега е $ a."

Вижте разликата, Котлин е толкова четим и чист.

3. Нулева безопасност (типове за нулиране и ненулеви типове)

В Java по подразбиране всичко е нищожно. Така че, ние изисквахме много проверки, за да избегнем NPE

// JAVA
Име на низ = null;

// Безопасен начин за избягване на NPE
ако (нула! = име) {
    int length = name.length ();
}
// Хвърля NPE
int length2 = name.length ();

Типът на системата на Котлин е насочен към премахване на опасността от нулеви препратки от код, известен също като грешка в милиарди долари.

Един обикновен низ може да не съдържа нула, но за да разрешим нулируемия низ, трябва да дадем тип като String?

// KOTLIN
име име: String = "Java"
name = null // Грешка на компилатора
val lastName: Струна? = "Котлин"
lastName = null // Работи добре

Докато достъп до свойствата на променливите, обикновеният String няма да хвърля NPE, а String? ще хвърли NPE.

Има няколко начина да го избегнете:

  • Използване на if-else Normal Check
// Нормална проверка
val дължина = ако (lastName! = null) lastName.length else -1
  • Използване на SafeCall ?. Оператор (една от най-добрите функции в Котлин)
// Безопасно обаждане
val length = lastName? .length // Изход: lastName дължина или null

Това връща lastName.length, ако lastName не е null, в противен случай null. Сигурни разговори ?. наистина са полезни във верига от препратки като emp? .addr? .house Ако някой от свойствата е нулев, то ще върне нула, но не и NPE.

Ако не искаме да върнем нула и искаме да върнем някаква стойност по подразбиране Можем ли да използваме Elvis Operator?:

// Използване на Elvis Operator
val дължина = lastName?. дължина?: -1 // Изход: lastName дължина или -1
  • Използвайки !! Оператор (за любителите на NPE)
// Използвайки !! Оператор
val length = lastName !!. length // Хвърлете NPE, ако lastName е нула

4. Въведете Проверка и автоматично кастинг

В Java използваме instanceof за проверка на типа и след това трябва да въведем cast за достъп до неговите свойства.

// JAVA
if (име instanceof String) {
    int length = ((String) име) .length ();
}

В Kotlin ние използваме е за проверка на типа, а компилаторът интелигентно го излъчва. Страхотен

// KOTLIN
ако (името е String) {
    val дължина = name.length
}

Повече информация можете да намерите тук.

5. Когато изразяване

За пример: Искам да намеря обекта е 1 или 5 или String или някакъв друг тип.

В Java трябва да използваме instanceof & превключвател, за да изпълняваме горната задача.

// JAVA
private String switchExample (Име на обекта) {
    ако (име instanceof Integer) {
        Integer tempInt = (Integer) име;
        превключвател (tempInt) {
            случай 1:
            случай 5:
                връщане "1 или 5";
            по подразбиране:
                връщане "Не 1 или 5";
        }
    } else if (име instanceof String) {
        връщане "String";
    }
    връщане "Not Int или String";
}

В Котлин, когато изразяването го прави толкова просто. Това е автоматичен тип гласове и можем да използваме толкова много изрази вътре в него. На всичкото отгоре е толкова четим.

// KOTLIN
забавно когато Пример (име: Всяко): String =
        кога (име) {
            1, 5 -> "1 или 5"
            е Int -> "Не 1 или 5"
            е String -> "String"
            else -> "Не Int или String"
        }

6. Класове

В Java трябва да създадем getter и setters за достъп до свойствата в клас.

// JAVA
клиент в публичен клас {
    частно име на низ;

    обществен клиент (име на низ) {
        this.name = име;
    }

    public String getName () {
        име за връщане;
    }

    public void setName (Име на низ) {
        this.name = име;
    }
}

В Котлин няма повече гетъри и сетери. Но можем да създадем, ако искате да зададете такива по избор.

// KOTLIN
клиент на клас (var име: String)

Това е най-добре в Котлин. Когато видях това, една дума ми дойде на ум WOW !!! Страхотно е

И така, че само кратък поглед върху някои от нещата, които правят живота ни по-добър. Благодарим Ви, че прочетох първата ми публикация в Medium. Можете да получите достъп до всички горепосочени фрагменти от кода във връзката.

Ако искате да започнете да използвате Kotlin, моля, разгледайте официалната им документация. Наистина е добре.

За да видите повече актуализации, просто ме последвайте на среден или Twitter. Оставете мислите си в секцията за коментари или се свържете с мен в Twitter и аз ще продължа да добавям към поредицата.

Ако ви харесва, моля, не забравяйте да ръкопляскате. Ако задържите бутона за пляскане, можете да оставите още хлопки.