На этом шаге мы рассмотрим небольшой пример, иллюстрирующий совместимость с классом 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.