Подтвердить что ты не робот

Существует ли Scala средство управления байт-кодом с высоким уровнем, например Javassist?

Я ищу инструмент управления байт-кодом высокого уровня, такой как Javassist, но который понимает некоторые особенности Scala. Инструменты управления байт-кодом нижнего уровня должны быть относительно агностическими, но для моих случаев использования что-то на уровне Javassist намного лучше. Однако инструмент на этом уровне должен знать об исходном языке и его байткоде. Что-то вроде этого существует для Scala? До сих пор я мог использовать Javassist с Scala для очень простых вещей, но я был укушен некоторыми различиями Scala/Java для нескольких других вещей.

4b9b3361

Ответ 1

Я не думаю, что такой инструмент существует (пока). Текущая ситуация заключается в том, что вы не можете смешивать единицы компиляции, скомпилированные с различными версиями Scala, то есть класс, скомпилированный с Scala 2.9, не будет взаимодействовать с классом, скомпилированным с помощью Scala 2.10.

Когда вы используете Scala 2.10, вы можете использовать Scala отражение и Scala, чтобы достичь аналогичных целей, как при модификации байт-кода. Для меня это выглядит как самый лучший способ доказательства.

Один из вопросов, связанных с добавлением идентификатора серийной версии. Это должно быть возможно с помощью макросов Scala. С макросами Scala он может даже управлять идентификаторами серийной версии во внешней базе данных в соответствии с изменениями API.