Size: a a a

Kotlin Community

2020 November 09

АО

Алексей Овсянников... in Kotlin Community
Kirill Gamazkov
А почему не создавать инстанс через создание инстанса, т. е. через конструктор? А то из буханки троллейбус можно сделать.
И, повторюсь, на рефлексию у меня аллергия. По мне это инструмент с очень узким полем применения, а не ежедневная штука
Насколько я помню, у вас в итоге получается приложение - тот же мэйн. Дальше окошками и прочим вы уже управляете через создания инстансов
источник

AN

Alexander Nozik in Kotlin Community
Алексей Овсянников
Насколько я помню, у вас в итоге получается приложение - тот же мэйн. Дальше окошками и прочим вы уже управляете через создания инстансов
Там есть рефлективные решения в DI, но этим можно не пользоваться
источник

АО

Алексей Овсянников... in Kotlin Community
Alexander Nozik
Там есть рефлективные решения в DI, но этим можно не пользоваться
Ну так в том и дело
источник

АО

Алексей Овсянников... in Kotlin Community
tornadofx-open-new-window-demo/Hello.kt at master · freewind-demos/tornadofx-open-new-window-demo
https://github.com/freewind-demos/tornadofx-open-new-window-demo/blob/master/src/main/kotlin/example/Hello.kt
источник

АО

Алексей Овсянников... in Kotlin Community
Одна из первых ссылок в гугле, где там рефлексия-то?
источник

АО

Алексей Овсянников... in Kotlin Community
Более того, если чуть копнуть - можно вообще (почти) без ::класс всё делать
источник

PE

Pavel Erokhin in Kotlin Community
Алексей Овсянников
Одна из первых ссылок в гугле, где там рефлексия-то?
Он имеет в виду что типа потом под капотом вызывается .createNewInstance() для KClass объектов которые в конструктор App передает
источник

AN

Alexander Nozik in Kotlin Community
Там можно это руками сделать через оверрайт старта в App/
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
А какой опыт в спринге, чтобы была такая аллергия?
Т. к. в джаву очень поздно завезли функциональщину, задачи, которые прямо решаются лямбдами и ФВП (то же кэширование и транзакции), стали решать аннотациями, ползанием рефлексией и байткод-процессингом.
При этом потерялась ссылочная прозрачность. Если у меня есть метод inTransaction(block: () -> T): T - я могу провалиться в его исходники и посмотреть, что он делает. Если у меня есть только @Transactional на методе - мне ещё надо кучу времени потратить, чтобы найти, кто эту аннотацию процессит. И там будет не прямо готовый код, а кодогенератор.
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Т. к. в джаву очень поздно завезли функциональщину, задачи, которые прямо решаются лямбдами и ФВП (то же кэширование и транзакции), стали решать аннотациями, ползанием рефлексией и байткод-процессингом.
При этом потерялась ссылочная прозрачность. Если у меня есть метод inTransaction(block: () -> T): T - я могу провалиться в его исходники и посмотреть, что он делает. Если у меня есть только @Transactional на методе - мне ещё надо кучу времени потратить, чтобы найти, кто эту аннотацию процессит. И там будет не прямо готовый код, а кодогенератор.
Да при чем тут функциональщина вообще? Что такое функциональщина?
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Да при чем тут функциональщина вообще? Что такое функциональщина?
Ну я же привёл пример с @Transactional и inTransaction(block: () -> T): T
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Ну я же привёл пример с @Transactional и inTransaction(block: () -> T): T
При чем тут UI?
источник

АО

Алексей Овсянников... in Kotlin Community
Я не понял, к чему вы про это кодогенерацию вообще
источник

AE

Alexandr Emelyanov in Kotlin Community
Kirill Gamazkov
Т. к. в джаву очень поздно завезли функциональщину, задачи, которые прямо решаются лямбдами и ФВП (то же кэширование и транзакции), стали решать аннотациями, ползанием рефлексией и байткод-процессингом.
При этом потерялась ссылочная прозрачность. Если у меня есть метод inTransaction(block: () -> T): T - я могу провалиться в его исходники и посмотреть, что он делает. Если у меня есть только @Transactional на методе - мне ещё надо кучу времени потратить, чтобы найти, кто эту аннотацию процессит. И там будет не прямо готовый код, а кодогенератор.
выключаем ФП головного мозга :)
источник

KG

Kirill Gamazkov in Kotlin Community
Алексей Овсянников
Насколько я помню, у вас в итоге получается приложение - тот же мэйн. Дальше окошками и прочим вы уже управляете через создания инстансов
Чтобы оно получилось, мне надо СРАЗУ дать ему имя класса главного окна.
А в моём кейсе окна могли создаваться не на старте, и их могло быть несколько.
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Чтобы оно получилось, мне надо СРАЗУ дать ему имя класса главного окна.
А в моём кейсе окна могли создаваться не на старте, и их могло быть несколько.
Оверрайдите стартовый метод и делаете что угодно
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
При чем тут UI?
Я отвечал на вопрос, что из опыта со спрингом породило аллергию на рефлексию
источник

AN

Alexander Nozik in Kotlin Community
Kirill Gamazkov
Я отвечал на вопрос, что из опыта со спрингом породило аллергию на рефлексию
Не что, а какой опыт. Сколько времени вы с ним работали?
источник

KG

Kirill Gamazkov in Kotlin Community
Alexander Nozik
Не что, а какой опыт. Сколько времени вы с ним работали?
Года... три точно, наверно больше
источник

AN

Alexander Nozik in Kotlin Community
Ну ладно, а то я думал, что "не читал, но осуждаю".
источник