Можете ли вы получить классный комментарий программно - PullRequest
3 голосов
/ 10 ноября 2011

Возможно ли (есть аккуратный способ) получить комментарий к классу, используя отражение? Я мог бы прочитать файл .java и получить комментарий, но возможно, что его не будет, поэтому, если я найду первый экземпляр / **, а затем * / я получу комментарий метода.

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

Ответы [ 6 ]

7 голосов
/ 10 ноября 2011

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

Если есть информация, которая вам нужна во время выполнения, она должна быть сохранена в аннотации (ях). Это может быть доступно во время выполнения.

2 голосов
/ 10 ноября 2011

Если вы действительно хотите это сделать, вы можете написать (внешнее) приложение, которое анализирует ваш исходный файл и извлекает комментарии. Затем с помощью regex вы можете взять только те комментарии, которые вас интересуют (например, чуть выше ключевого слова "class" или что угодно.

).

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

2 голосов
/ 10 ноября 2011

Я думаю, что вы не можете получить комментарии по рефлексии, потому что компилятор обрезал комментарий, поэтому они не в .class. Например, Eclipse предоставляет вам помощь по javadoc, только если вы сообщаете ему, где лежат источники.

2 голосов
/ 10 ноября 2011

Насколько я знаю, нет способа сделать это с помощью отражения. Я сомневаюсь, что комментарий / JavaDoc переносится в файл класса после компиляции. Одним из способов сделать это было бы использование процессора аннотаций. При обработке аннотаций используется не отражение, а эквивалент во время компиляции исходных моделей / зеркал. Это позволяет вам получить документацию о программном элементе, таком как объявление класса или метод. Вы можете перенести это в файл метаданных для использования во время выполнения.

2 голосов
/ 10 ноября 2011

Это невозможно.Комментарии удаляются из вашего скомпилированного кода.

0 голосов
/ 10 ноября 2011

За исключением вещей, уже упомянутых другими, чтение из исходного файла .java является не отражением. Reflection работает с скомпилированным кодом, файлами .class.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...