Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Конвертировать на Kotlin / 7 сообщений из 7, страница 1 из 1
11.09.2020, 14:05
    #39997642
Мистер Шляпа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать на Kotlin
Коллеги, подскажите, как конвертировать с Java на Kotlin приведенный ниже код?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class JavaToKotlin {

        interface Fn {
            void say();
        }
        
        void  hi() {
            System.out.println("Hi!");
        }

        void ifTest() {
            
            Fn fn = this::hi;
            
            fn.say();
        }

        public static void main(String[] args) {
            (new JavaToKotlin()).ifTest();
        }

}



В частности, не поддается конвертации вот эта строка:
Код: java
1.
Fn fn = this::hi;


Пробовал конвертором в Inteliji Idea - не понимает такую конструкцию.
...
Рейтинг: 0 / 0
11.09.2020, 15:26
    #39997674
Мистер Шляпа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать на Kotlin
Разобрался сам.
Во-первых, функциональный интерфейс должен быть объявлен с ключевым словом fun:
Код: java
1.
fun interface Fn { ...



Во-вторых, синтаксис присваивания функции:
Код: java
1.
fn: Fn = Fn{hi()}



ссылку на метод
Код: java
1.
this::hi

компилятор не понимает.

В-третьих, первые два пункта доступны только начиная с версии Kotlin 1.4.
...
Рейтинг: 0 / 0
11.09.2020, 17:17
    #39997721
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать на Kotlin
Мистер Шляпа, Котлин - это более развитый язык чем Java по количеству фич.
И поэтому конвертация в Java в общем случае - невозможна. Поэтому код нужно
не конвертировать а переосмысливать с пониманием того что код на самом деле делает.

В конечном счете его полезный эффект - это вывод на экран слова "Hi" и
способ его вывода просто может быть в дидактическом смысле сложным.

Тоесть что ты хочешь от Java. Просто вывода hi или проделывания хитрых действий
которые в данной задаче лишены смысла а просто демонстрируют конкретные возможности Котлина?
...
Рейтинг: 0 / 0
11.09.2020, 23:34
    #39997861
Мистер Шляпа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать на Kotlin
mayton,

ты невнимательно прочитал мой пост. Речь о конвертации не с Котлина на Яву, а, наоборот, с Явы на Котлин. Раз Котлин такой богатый по части фич, а Ява бедная, то простейшие операции с функциональными интерфейсами должны быть. А их не было. Сами функциональные интерфейсы (SAM-вида) и те появились только с версии 1.4.
...
Рейтинг: 0 / 0
14.09.2020, 08:59
    #39998194
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать на Kotlin
Мистер Шляпа,

Берем Intellij IDEA, Выделяем класс на Java, нажимаем "Ctrl+Alt+Shift+k". Смотрим на результат. :-)

<:o)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
class JavaToKotlin {
    internal interface Fn {
        fun say()
    }

    fun hi() {
        println("Hi!")
    }

    fun ifTest() {
        val fn = object : Fn {
            override fun say() {
                hi()
            }
        }
        fn.say()
    }

    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            JavaToKotlin().ifTest()
        }
    }
}
...
Рейтинг: 0 / 0
14.09.2020, 09:08
    #39998196
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать на Kotlin
mad_nazgul,

Если ручками, то так.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class JavaToKotlin {
    fun interface Fn {
        fun say()
    }

    fun hi() {
        println("Hi!")
    }

    fun ifTest() =
            Fn { hi() }.say()

}

fun main(args: Array<String>) {
    JavaToKotlin().ifTest()
}
...
Рейтинг: 0 / 0
14.09.2020, 10:55
    #39998227
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать на Kotlin
А ну сорян.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Конвертировать на Kotlin / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]