Шаг 232.
Основы Kotlin.
Совместимость с Java. Совместимость с классом Java

    На этом шаге мы рассмотрим небольшой пример, иллюстрирующий совместимость с классом Java.

    В дальнейшем вы создадите в IntelliJ новый проект с именем Interop. Interop будет содержать два файла: Hero.kt (файл с кодом на Kotlin, который представляет героя из игры NyetHack) и Jhava.java (класс Java, который представляет монстра из другого измерения). Создайте эти два файла.

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

    Начнем с объявления класса Jhava и его метода с именем utterGreeting(), который возвращает String.

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


Рис.1. Объявление класса и метода в Java (Jhava.java)

    Теперь создадим функцию main() в Hero.kt. Внутри нее объявите переменную монстра val adversary, экземпляр Jhava.

fun main(args: Array<String>) {
    val adversary = Jhava()
}
Файл с проектом можно взять здесь.


Рис.2. Объявление функции main() и переменной adversary (Hero.kt)

    Свершилось! Написав эти строки на Kotlin, вы создали объект Java и сократили дистанцию между двумя языками. Как видите, вызвать код на Java из Kotlin очень просто.

    Но нам есть что еще показать. Для проверки выведите приветственный рык монстра Jhava.

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


Рис.3. Вызов метода Java из Kotlin (Hero.kt)

    Вы создали объект Java, вызвали его метод и сделали все это из Kotlin. Запустите Hero.kt. Вы увидите, как монстр приветствует героя (BLARGH!) в консоли.


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

    Kotlin создавался с прицелом на бесшовную совместимость с Java. Также он включает ряд усовершенствований, недоступных в Java. Придется ли вам отказаться от всех усовершенствований, организуя взаимодействия между этими языками? Конечно нет! Зная о различиях между этими двумя языками и используя аннотации, доступные на обеих сторонах, вы сможете взять все лучшее, что предлагает Kotlin.

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




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