таблицы символов и отражение в Java

1

Кажется, что java reflaction нуждается в том, чтобы таблица символов была скомпилирована в файл класса. но для проверки производительности во время выполнения мы обычно удаляем его. (я не знаю java, в c++, мы действительно вытаскиваем его в производственных менеджерах).

мой вопрос: если я удалю таблицу символов, это означает, что некоторая библиотека, например, пружина, не будет работать правильно?

пс:

от Professional Eclipse 3 для разработчиков Java от Berthold Daum

Classfiles и JDK Compliance На странице Compliance & Classfiles вы можете указать, какая символьная информация, такая как имена переменных и номера строк, должна быть включена в сгенерированные файлы классов. Эта информация требуется для отладки, поэтому вы можете оставить предлагаемые настройки без изменений. Однако для хорошо проработанной программы может иметь смысл удалить эту информацию из файлов классов; сгенерированные файлы намного меньше без таблиц символов.

  • 2
    Что вы подразумеваете под таблицей символов в Java? Это не часто используемый термин в Java.
  • 0
    Можете ли вы объяснить, почему вы пытаетесь это сделать?
Показать ещё 5 комментариев
Теги:
reflection
spring

1 ответ

3

В общем, трудно понять, какой рефлексивный код может использовать и не использовать. Возможно, что такие фреймворки, как Spring, могут использовать отладочную информацию, доступную во время выполнения.

В качестве примера возьмите Spring @PreAuthorize и связанные аннотации. В документации мы видим следующее:

Вы можете получить доступ к любому из аргументов метода по имени в качестве переменных выражения, если ваш код содержит отладочную информацию, скомпилированную в.

Поэтому любой шаг, который вы предпринимаете для удаления отладочной информации после компиляции, должен быть тщательно протестирован или ваш код должен быть известен, чтобы он не включал шаблоны, подобные приведенным выше.

Обратите внимание, однако, что это отражение не предоставляется стандартной библиотекой Java Reflection. Для получения дополнительной информации о том, как это делается на Java, см. Этот ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню