Я читал о 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”