…и почему вы должны попробовать Kotlin для своего серверного приложения

Kotlin — это статически типизированный язык программирования, поддерживаемый и разработанный JetBrains. Язык был выпущен в 2011 году и может работать на виртуальной машине Java (JVM). Кроме того, это язык, который сочетает в себе объектно-ориентированное программирование (ООП) и функциональное программирование.

В этой статье я поделюсь с вами своими 5 любимыми функциями Kotlin, которые были бы чрезвычайно полезны в Java:

1. Нулевая безопасность

NullPointerException (NPE) — одно из наиболее частых исключений в Java, которое может создаваться во время выполнения. Обычно, если мы не уверены в нулевой безопасности, мы кодируем что-то вроде этого:

Давайте напишем какое-нибудь простое приложение, в котором мы будем использовать эту нулевую проверку:

Но что, если у нас есть класс примерно так:

… и вы захотите вызвать это:

Очевидно, ваша программа рухнет. Чтобы этого избежать, нужно закодировать этого монстра:

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

В нашем примере MyClass выглядит как nullable, поэтому давайте перепишем нашу функцию на Kotlin:

Привычный тип MyClass — это ненулевой тип в Котлине. MyClass? — это тип, допускающий значение null, и мы не можем называть его так, как привыкли в Java.

Обнуляемые типы используются в двух случаях:

  1. Если в некоторых случаях нам нужно нулевое значение (например, в POJO у нас могут быть нулевые поля);
  2. Если мы используем некоторые библиотеки 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 :

Если вам интересна эта функция, перейдите по ссылке:



Вместо заключения

Мир всем🖐