Шаг 234.
Основы Kotlin.
Совместимость с Java. Совместимость и null (окончание)

    На этом шаге мы продолжим рассматривать обработку null.

    Возможно, вы захотите представить отсутствие дружелюбия каким-то другим значением, отличным от null. Используйте оператор ?: (объединения по null), чтобы вернуть значение по умолчанию в тех случаях, когда friendshipLevel имеет значение null.

fun main(args: Array<String>) {
    val adversary = Jhava()
    println(adversary.utterGreeting())

    val friendshipLevel = adversary.determineFriendshipLevel()
    println(friendshipLevel?.toLowerCase() ?: "It's complicated.")
}


Рис.1. Подстановка значения по умолчанию с помощью оператора ?: (Hero.kt)

    Запустив Hero.kt, вы увидите сообщение It's complicated.


Рис.2. Результат рабты приложения

    Вы использовали @Nullable, чтобы сообщить, что метод может вернуть null. Сообщить, что значение точно не будет null, можно с помощью аннотации @NotNull. Эта замечательная аннотация избавляет пользователя API от беспокойства о том, что возвращаемое значение может быть null. Приветствие монстра Jhava не должно быть null, поэтому добавьте аннотацию @NotNull в заголовок метода utterGreeting().

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class Jhava {
    @NotNull
    public String utterGreeting() {
        return "BLARGH";
    }

    @Nullable
    public String determineFriendshipLevel() {
        return null;
    }
}
Файл с проектом можно взять здесь.


Рис.3. Указание, что возвращаемое значение не будет null (Jhava.java)


Вам снова понадобится импортировать аннотации.

    Аннотации @Nullable и @NotNull можно использовать для уточнения контекста возвращаемых значений, параметров и даже полей.

    Kotlin обеспечивает разные инструменты для обработки null-значений, включая возможность запрещать обычным типам принимать значение null. Самый распространенный источник ошибок с null-значениями в Kotlin - это взаимодействия с кодом на Java, так что будьте аккуратны, вызывая код Java из Kotllin.

    На следующем шаге мы рассмотрим соответствие типов.




Предыдущий шаг Содержание Следующий шаг