Почему у java нет парсера собственного кода?

209
10 февраля 2020, 05:40

Сразу скажу, что знаю, есть, Javaparser проект, но он от сторонних разработчиков. Я просто не могу понять если java компилируется в байт-код из исходников, то должен быть и парсер, разве нет? Под парсером я понимаю построение структуры компилируемого приложения, чтобы, например, можно было получить узел определенной переменной по имени. В чем тут подводные камни, если такая фича не предусмотрена(про javap знаю, но он работает с байт-кодом, а не исходниками)

Answer 1

У компилятора Java есть API. На его использовании построена кодогенерация Lombok, например. Примеры его использования есть на Stackoverflow, например этот ответ и этот.

Answer 2

Java написана на C++ (сейчас частично переписывается). Поэтому обеспечить доступ к синтаксическому дереву задача не тривиальная.

А так как это мало кому было нужно, то добавлять эту фичу не стали.

READ ALSO
Чем proxy через BeanPostProcessor отличается от AOP?

Чем proxy через BeanPostProcessor отличается от AOP?

Не могу понять, чем прокси класс который создается, когда я в BeanPostProcessor добавляю какую-нибудь логику после инит метода отличается от того...

220
Не компилируется JavaFX приложение

Не компилируется JavaFX приложение

Импортировал библиотеку, но приложение не компилируетсяКод исходный, я ничего не менял

167
Junit Spy Mockito Тестирование

Junit Spy Mockito Тестирование

Всем привет,учу java, есть задание протестировать с помощью Mockitospy void метод который вызывает другие методы

210
Хеш Java Bouncy Castle

Хеш Java Bouncy Castle

Подскажите, пожалуйста, как из указанного byte[] получить хеш по ГОСТ Р 3411-94

200