…и почему вы должны попробовать Kotlin для своего серверного приложения
Kotlin — это статически типизированный язык программирования, поддерживаемый и разработанный JetBrains. Язык был выпущен в 2011 году и может работать на виртуальной машине Java (JVM). Кроме того, это язык, который сочетает в себе объектно-ориентированное программирование (ООП) и функциональное программирование.
В этой статье я поделюсь с вами своими 5 любимыми функциями Kotlin, которые были бы чрезвычайно полезны в Java:
1. Нулевая безопасность
NullPointerException (NPE) — одно из наиболее частых исключений в Java, которое может создаваться во время выполнения. Обычно, если мы не уверены в нулевой безопасности, мы кодируем что-то вроде этого:
Давайте напишем какое-нибудь простое приложение, в котором мы будем использовать эту нулевую проверку:
Но что, если у нас есть класс примерно так:
… и вы захотите вызвать это:
Очевидно, ваша программа рухнет. Чтобы этого избежать, нужно закодировать этого монстра:
Чтобы решить эту проблему, разработчики Kotlin придумали типы с нулевым и ненулевым значением.
В нашем примере MyClass
выглядит как nullable, поэтому давайте перепишем нашу функцию на Kotlin:
Привычный тип MyClass
— это ненулевой тип в Котлине. MyClass?
— это тип, допускающий значение null, и мы не можем называть его так, как привыкли в Java.
Обнуляемые типы используются в двух случаях:
- Если в некоторых случаях нам нужно нулевое значение (например, в POJO у нас могут быть нулевые поля);
- Если мы используем некоторые библиотеки Java, которые не были адаптированы для Kotlin. Очевидно, что все объекты оттуда обнуляемы.
Вот почему мы называем операцию ?.
, что буквально означает «если null, вызвать следующую операцию, иначе вернуть null».
Вместо этого мы можем вызвать !!.
, и NPE будет вызван, если будет null. Используйте его, если вы на 100% уверены в безопасности объекта null (прямо как в Java :)).
Но что, если мы хотим что-то напечатать, если наше выражение возвращает null:
?:
буквально означает «если левая часть равна нулю, вызвать или вернуть правую часть».
Чтобы увидеть более подробную информацию, прочитайте документы:
2. Функции расширения
Сколько раз вам нужно было создать какой-то метод для расширения функциональности какого-либо объекта?
Например, нам нужно создать метод, который извлекает четные значения из списка. В Java мы бы создали что-то вроде этого:
Но Kotlin предоставляет нам функции расширения, которые позволяют нам создавать новые методы без изменения класса. Это чрезвычайно полезно, когда нам нужно расширить какой-то класс из сторонней библиотеки, который вы не можете изменить.
Перепишем наш код:
Подробнее здесь:
3. Функции области
Функции области действия просто позволяют писать более красивый код. Вкратце, функции области видимости выполняют некоторый блок кода в контексте объекта. Фактически вы передаете лямбда-функцию в функцию области видимости. Их пять: let
, run
, with
, apply
и also
. У них есть два отличия:
- объект контекста:
this
илиit
; - возвращаемое значение:
this
или новое значение.
Чтобы было понятнее, приведу несколько примеров:
также
also
принимает it
и возвращает this
.
it
— параметр по умолчанию для лямбда-функции в Котлине.
Вот пример создания нового объекта с also
:
Или, если вы хотите сделать код более читабельным, вы можете указать имя:
применять
apply
— это функция, которая принимает и возвращает this
.
this
— ссылка на вызываемый объект. Иногда вам не нужны дополнительные подробности it
или имя параметра. Вот почему мы можем использовать функции области видимости, которые используют this
.
Итак, давайте переделаем наши примеры ниже:
позволять
let
принимает it
и возвращает новый объект.
Пример:
Кроме того, если наш объект допускает значение NULL, могут пригодиться функции области видимости:
бегать
run
принимает this
и возвращает новый объект. Оно связано с let
так же, как apply
связано с also
.
Давайте переделаем наш предыдущий пример:
с
with
похоже на run
, но это не функция расширения. Объект контекста передается как аргумент, но внутри лямбды он доступен как this
.
Пример:
4. Строковые шаблоны
Вместо Java-метода String.format()
Kotlin предлагает более элегантный способ — строковые шаблоны.
На примере может быть понятно:
5. Выражения диапазона
Эта функция может быть в основном полезна в задачах алгоритмов, где мы широко используем цикл for(int i = 0; i < ...; i++)
.
Kotlin сочетает в себе множество полезных инструментов из других языков программирования. И диапазоны являются одним из них.
Вот способы Java и Kotlin написать простой цикл диапазона:
Чтобы перебирать числа в обратном порядке, используйте downTo
:
Чтобы перебрать диапазон чисел, который не включает его конечный элемент, используйте until
:
Если вам интересна эта функция, перейдите по ссылке:
Вместо заключения
Мир всем🖐