Pull to refresh
15
0
Send message
GetUser().also { user ->
    if (user is User) {
        //....
    }
}


или например:

(GetUser() as? User)?.also { user ->
    //....
}
Для вычисляемых/изменяемых значений в Kotlin есть другие конструкции, например, inline-функции let и also. Будет что-то вроде такого:
getValue().let { value ->
    if (value is String) {
        processString(value)
    }
}
Не согласен с автором, что современные фичи Java реализует лучше, чем Kotlin. Даже приведенный пример с instanceof на практике выглядет примерно так:
if (value instanceof String stringValue) {
    // код со stringValue
    processString(stringValue);
}

Пладим новую переменную, от первоначальной отличающуюся только типом.
Kotlin со своим smart cast позволяет этого не делать.
if (value is String) {
    // работаем с value как со строкой
    processString(value);
}

Это конечно вкусовщина, но мне приятнее второй вариант.
Когда var в Java появился? А когда зарелизился Kotlin?
Про производительность есть и обратная сторона, когда код, сгенерированный kotlinc будет более оптимальным, чем javaс. Примеры:
  • Наличие inline-функций. Тот же forEach на коллекции в kotlin будет заинлайнен в байт-коде, вместо вызова метода в Java.
  • Java-путь для null-safety(Optional) вообще создает доп. обертку над полем/переменной. В Koltin же null-safety реализовано по-человечески, на уровне компилятора.
безусловно. Я не спорю, что Java в топе, и будет в топе еще многие годы. Но это не отменяет того факта, что Kotlin отваевывает кусок рынка Java, особенно в Android-разработке. Да и back-end последнее время всё чаще пишется на Kotlin.
Мне кажется, рывок развития Java в последнии годы во многом был связан как раз с успехом Kotlin. JetBrains заставили Oracle проснуться.
2

Information

Rating
Does not participate
Location
Израиль
Registered
Activity