Рубрики
Без рубрики

Простые, но мощные функции Kotlin

Как Kotlin Улучшает обработку нулевых значений. Помеченный kotlin, java, нулевой проверкой.

Я читал о Kotlin, простом, но мощном языке, который может быть альтернативой Java, много лет назад, когда Jetbrains выпустила свои первые версии Kotlin. Проработав над Java более длительное время, я назвал это “богохульством” и полностью проигнорировал его.

Однако с тех пор, как Котлин был объявлен официальным языком программирования для Android в Google, я/О , я понял, что все это время был глупым и предвзятым по отношению к Котлину. Я чувствовал себя глупо из-за того, что не понял этого раньше, и начал тратить время на изучение Kotlin.

В настоящее время я прохожу курс pluralsight, Основы Котлина автор Кевин Джонс . Как он объяснял” Как Kotlin Улучшает обработку нулевых значений “, я понял простую, но мощную функцию Kotlin в обработке ” null ” и как она может помочь разработчику java избежать разочаровывающей нулевой проверки.

На Яве

В Java по умолчанию любая объявленная переменная может быть нулевой . Например,

class Developer {
    String team;
    String role;
    String project;

    void display(String name, String employeeType) {
        if (employeeType.equals("Full-Time")) {
            System.out.println(name + " is a Full-Time " + role + " in " + team + " working in " + project);
        } else {
            System.out.println(name + " is a Intern "+ role + " in " + team + " working in " + project);
        }
    }
}

class LearningKotlinUtil {

    public static void main(String[] args) {
        Developer dev = new Developer();
        dev.project = "ePhone7";
        dev.team = "Mobile Team";
        dev.role = "Android Developer";

        dev.display("Subbu", "Full-Time");

        dev.display("Subbu", null);
    }
}

В классе Разработчик , тип может быть нулевым. Таким образом, второй вызов метода ‘ display() ‘ вызовет исключение NullPointerException . Чтобы избежать этого, разработчик должен выполнить нулевую проверку , как показано ниже.

class Developer {
    ...
    void display(String name) {
        if (employeeType != null && employeeType.equals("Full-Time")) {
            ...
        } else {
            ...
        }
    }
}

Чтобы избежать этого, разработчик должен выполнить || нулевую проверку ||, как показано ниже. или вы можете написать, как показано ниже,

class Developer {
    ...
    void display(String name, String employeeType) {
        if ("Full-time".equals(employeeType)) {
            ...
        } else {
            ...
        }
    }
}

Чтобы избежать этого, разработчик должен выполнить нулевую проверку , как показано ниже. или вы можете написать, как показано ниже, Чтобы воспользоваться возможностями IDE, разработчик может аннотировать переменную тип с аннотацией

class Developer {
    ...

    void display(String name, @NonNull String employeeType) {
        if (employeeType != null && employeeType.equals("Full-Time")) {
            ...
        } else {
            ...
        }
    }
}

Чтобы избежать этого, разработчик должен выполнить нулевую проверку , как показано ниже. или вы можете написать, как показано ниже, Чтобы воспользоваться возможностями IDE, разработчик может аннотировать переменную

Чтобы избежать этого, разработчик должен выполнить || нулевую проверку ||, как показано ниже. или вы можете написать, как показано ниже, Чтобы воспользоваться возможностями IDE, разработчик может аннотировать переменную ||тип || с аннотацией || @NonNull ||, как показано ниже. @NonNull || аннотации поддерживаются библиотекой поддержки аннотаций Android или поддержкой аннотаций Java 8 JSR-308. || импорт Android.Ненулевой; поддержка.аннотация. Теперь IDE (Intellij/Android Studio) предупреждает разработчика, как показано на скриншотах ниже,

Чтобы избежать этого, разработчик должен выполнить нулевую проверку , как показано ниже. или вы можете написать, как показано ниже, Чтобы воспользоваться возможностями IDE, разработчик может аннотировать переменную

Чтобы избежать этого, разработчик должен выполнить || нулевую проверку ||, как показано ниже. или вы можете написать, как показано ниже, Чтобы воспользоваться возможностями IDE, разработчик может аннотировать переменную ||тип || с аннотацией || @NonNull ||, как показано ниже. @NonNull || аннотации поддерживаются библиотекой поддержки аннотаций Android или поддержкой аннотаций Java 8 JSR-308. || импорт Android.Ненулевой; поддержка.аннотация. Теперь среда разработки (Intellij/Android Studio) предупреждает разработчика, как показано на скриншоте ниже, однако это не мешает переменной “||тип ||” устанавливать значение “Если разработчик не будет осторожен, нулевой указатель может быть реализован только для спасения во время выполнения. null”, и разработчик должен прислушиваться к предупреждениям среды разработки (если она используется). выстрелы,

Чтобы избежать этого, разработчик должен выполнить нулевую проверку , как показано ниже. или вы можете написать, как показано ниже, Чтобы воспользоваться возможностями IDE, разработчик может аннотировать переменную тип с аннотацией @NonNull , как показано ниже. @NonNull аннотации поддерживаются библиотекой поддержки аннотаций Android или поддержкой аннотаций Java 8 JSR-308. импорт Android.Ненулевой; поддержка.аннотация. Теперь среда разработки (Intellij/Android Studio) предупреждает разработчика, как показано на скриншоте ниже, однако это не мешает переменной ” тип ” устанавливать значение “Если разработчик не будет осторожен, нулевой указатель может быть реализован только для спасения во время выполнения. null’ и разработчик должен прослушать Kotlin ,

class Developer {
    var team: String = ""
    var role: String = ""
    var project: String = ""

    fun display(name: String, employeeType: String){
        if(employeeType == "Full-Time") {
            println("$name is a Full Time $role in $team working in the $project project")
        } else {
            println("$name is a Intern $role in $team working in the $project project")
        }
    }
}

fun main(args: Array) {
    val dev = Developer()
    dev.team = "Mobile Team"
    dev.role = "Android Developer"
    dev.project = "ePhone7"

    dev.display("Subbu", "Full-Time")
}

Теперь параметр, ‘ тип сотрудника ‘ никогда не может быть нулевым , и попытка сделать это приведет к ошибке компиляции .

fun main(args: Array) {
    val dev = Developer()
    dev.team = "Mobile Team"
    dev.role = "Android Developer"
    dev.project = "ePhone7"

    dev.display("Subbu", "Full-Time")
    dev.display("Subbu", null)
}

Если вы действительно хотите разрешить типу сотрудника принимать ‘ нулевой ‘ значения, вы должны явно указать, как показано ниже, используя ‘?’ оператор.

Если переменная “Тип сотрудника” может иметь значения “null”, она должна быть объявлена как ” Строка? ‘ в соответствии с системой типов Kotlin.

class Developer {
    ...
    fun display(name: String, employeeType: String?){
        ...
    }
}

Объявление ‘ EmployeeType: Строка? ‘ указывает, что компилятор, у которого есть тип EmployeeType, может принять “null” в качестве значения. Это эквивалентно аннотации @Nullable в java.

Это одна из мощных функций Kotlin. Создание переменных как “ненулевых” по умолчанию и принуждение разработчика явно объявлять переменные, которые могут быть “нулевыми” , 1. Косвенно заставляет разработчика задуматься об использовании переменных при объявлении одного 2. Это предотвращает попытку разработчика присвоить/передать значение “null” во время самой компиляции.

Я только начал изучать Kotlin, и я буду продолжать публиковать новые простые, но мощные функции Kotlin по мере их изучения.

По моему скромному мнению, лучшее понимание системы типов Kotlin в значительной степени поможет разработчику подумать о значениях, которые переменная может содержать при объявлении, а также не позволит другим разработчикам передавать/присваивать значения “null” даже по ошибке.

Я только начал изучать Kotlin, и я буду писать в дальнейших блогах о функциях, которые мне понравились, как только я их полностью пойму. Пожалуйста, не стесняйтесь оставлять любые комментарии или предложения.

Оригинал: “https://dev.to/subbramanil/simple-yet-powerful-features-of-kotlin”