Хуткі погляд у Яву супраць Котліна

Kotlin - гэта новая мова праграмавання ад JetBrains, вытворцы лепшых IDE ў свеце.

У мінулым годзе прыблізна ў гэты час Google абвясціў Kotlin як яшчэ адну афіцыйную мову распрацоўкі прыкладанняў для Android у Google I / O’17.

За год з’явілася так шмат артыкулаў пра Котлін, і распрацоўшчыкі імгненна мігруюць у Котлін.

У 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 для фарматавання радкоў

// JAVA
int a = 20;
final string St1 = String.format ("Узрост Эмі складае% d", а);
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
калі (null! = імя) {
    int length = name.length ();
}
// Кідае NPE
int length2 = name.length ();

Сістэма тыпу Котліна накіравана на ліквідацыю небяспекі нулявых спасылак з кода, таксама вядомы як памылка мільярда долара.

Звычайная радок не можа ўтрымліваць нулявыя значэнні, але, каб дазволіць зменнай радкі, мы павінны даць тып "Радок"?

// KOTLIN
name val: String = "Java"
name = null // Памылка кампілятара
val lastName: Радок? = "Котлін"
lastName = null // Творы

Падчас доступу да ўласцівасцей зменных, звычайная String не будзе кідаць NPE, а String? кіне NPE.

Ёсць некалькі спосабаў пазбегнуць гэтага:

  • Выкарыстанне if-else Нармальная праверка
// Звычайная праверка
val length = калі (lastName! = null) lastName.length else -1
  • Выкарыстанне SafeCall? Аператар (адна з лепшых функцый у Котлін)
// Бяспечны званок
val length = lastName? .length // Выхад: lastName length або null

Гэта вяртае lastName.length, калі lastName не з'яўляецца null, інакш null. Бяспечныя званкі?. на самай справе карысныя ў ланцужку спасылак, такіх як emp?

Калі мы не хочам вяртаць нуль і хочам вярнуць нейкае значэнне па змаўчанні. Ці можна выкарыстоўваць аператара Elvis?:

// Выкарыстанне аператара Elvis
val length = lastName? .length?: -1 // Выхад: даўжыня lastName альбо -1
  • Выкарыстоўваючы !! Аператар (для аматараў NPE)
// Карыстаючыся !! Аператар
val length = lastName !!. length // Кіньце NPE, калі lastName з'яўляецца нулявым

4. Увядзіце праверку і аўтаматычнае ліццё

У Java мы выкарыстоўваем instanceof для праверкі тыпу, а потым трэба ўвесці ролю для доступу да сваіх уласцівасцей.

// JAVA
калі (імя instanceof String) {
    int length = ((Радок) імя) .length ();
}

У Котліне мы выкарыстоўваем для праверкі тыпу, а кампілятар разумна ўводзіць яго. Дзіўны

// KOTLIN
калі (імя String) {
    val length = name.length
}

Больш інфармацыі тут.

5. Пры выразе

Для прыкладу: Я хачу знайсці аб'ект 1 альбо 5 альбо String альбо нейкі іншы тып.

У Java мы павінны выкарыстоўваць instanceof & пераключэнне для выканання вышэй задачы.

// JAVA
прыватны струнны ключExample (назва аб'екта) {
    калі (імя instanceof Integer) {
        Integer tempInt = (Integer) імя;
        пераключальнік (tempInt) {
            выпадак 1:
            выпадак 5:
                вяртанне "1 ці 5";
            па змаўчанні:
                вяртанне "Не 1 ці 5";
        }
    } else if (імя асобніка String) {
        вярнуцца "Радок";
    }
    вярнуцца "Не Int ці String";
}

У Котліна, калі выраз робіць гэта так проста. Гэта аўтаматычны тып акцёраў, і мы можам выкарыстоўваць так шмат выразаў у ім. Акрамя гэтага, ён настолькі чытэльны.

// KOTLIN
весела, калі прыклад (імя: Любы): String =
        калі (імя) {
            1, 5 -> "1 ці 5"
            гэта Int -> "Не 1 ці 5"
            is String -> "Радок"
            else -> "Не Int або String"
        }

6. Заняткі

У Java мы павінны ствараць геттер і сетэр для доступу да ўласцівасцей у класе.

// JAVA
Кліент публічнага класа {
    імя прыватнага радка;

    грамадскі кліент (назва радка) {
        this.name = імя;
    }

    public String getName () {
        вяртанне імя;
    }

    public void setName (Імя радка) {
        this.name = імя;
    }
}

У Котліне больш няма гетэраў і сетэраў. Але мы можам стварыць, калі хочаце ўсталяваць нестандартныя.

// KOTLIN
Кліент класа (імя var: String)

Лепш за ўсё гэта ў Котліне. Калі я ўбачыў гэта, адно слова прыйшло мне ў галаву WOW !!! Гэта дзіўна

Такім чынам, толькі кароткі агляд некаторых рэчаў, якія паляпшаюць наша жыццё. Дзякуй за прачытанне майго першага паведамлення ў асяроддзі. Вы можаце атрымаць доступ да ўсіх вышэйсказаных фрагментаў кода па спасылцы.

Калі вы хочаце пачаць выкарыстоўваць Kotlin, звярніцеся да іх афіцыйнай дакументацыі. Гэта сапраўды добра.

Каб убачыць больш абнаўленняў, проста ідзіце за мной на Twitter або Twitter. Пакіньце свае думкі ў раздзеле каментарыяў альбо дашліце да мяне ў Twitter, і я працягваю дадаваць у серыю.

Калі вам гэта падабаецца, калі ласка, не забудзьцеся пляскаць у далоні. Калі вы ўтрымліваеце кнопку хлоп, вы можаце пакінуць яшчэ хлоп.