Сделайте прокси на класс Kotlin из библиотеки Java, используя ASM - PullRequest
0 голосов
/ 09 июня 2018

У меня есть библиотека Java, которая создает прокси с использованием ASM.

В какой-то момент пользователь отправляет ему класс Kotlin.Я могу обнаружить, что это класс Kotlin из Java, но я не знаю, как я могу сделать из него прокси?Все, что я читаю из такого класса, не имеет смысла.

Сценарий таков:

  • пользователь отправляет класс Kotlin
  • Я делаю прокси
  • наконец, я делаю экземпляр такого класса

что было бы лучшим способом сделать это?

РЕДАКТИРОВАТЬ

Я только что понял, что одна из причинпочему я не могу переопределить функции Kotlin, потому что они генерируются как final методы в байт-коде.Есть ли способ сказать Котлину не делать этого?

1 Ответ

0 голосов
/ 10 июня 2018

Проблема, с которой я столкнулся, заключалась в том, что сгенерированные классы и методы final.Код ASM, который я использую, не обрабатывал окончательные методы, так как их нельзя перезаписать.

Решение состоит в том, чтобы пометить классы и функции в Kotlin как open.Вы можете сделать это вручную или с помощью плагина all-open.

Вот страница, которая объясняет проблему: https://blog.frankel.ch/open-your-classes-and-methods-in-kotlin/

...