Как получить javax.lang.model.type.TypeMirror из com.sun.source.tree. * TypeTree? - PullRequest
1 голос
/ 02 июля 2019

Я хотел проанализировать тело метода во время компиляции и потенциально внести в него небольшую модификацию. Я использовал com.sun.source.util.Trees.getTree (ExecutableElement) и TreeVisitor . К сожалению, TreeVisitor.visit * Type (...) методы не предоставляют полный путь к типу (например, вместо java.util.List посетитель возвращает только Список ).

Единственный разумный вариант, который я нашел, был Trees.getTypeMirror (TreePath) и Trees.getPath (CompilationUnitTree, Tree) . Как и ожидалось, он не работает для типов, определенных вне текущего модуля компиляции (я понятия не имею, как получить доступ к модулю компиляции, который содержит java.util.List определение).

Я также думал об анализе импорта, но он не решает проблему с подстановочными символами.

Я также прочитал ответы на вопрос Как найти объявление типа идентификатора с помощью API компилятора дерева Java? которая кажется немного похожей на мою проблему, однако в разделе кода отсутствует множество определений методов.

...