Использование класса в качестве имени поля в JDT DOM - PullRequest
3 голосов
/ 26 октября 2009

Я пытаюсь добавить вызов к полю StaticClassName.class для доступа к существующему классу, используя методы Dom из JDT.

Я получаю IllegalArgumentException, когда пытаюсь создать простое имя, используя ast.newSimpleName("class").
Я думаю, это потому, что JDT обрабатывает его как ключевое слово, когда оно также используется в качестве имени поля.

Есть ли способ заставить JDT принимать "класс" в качестве имени идентификатора или другой способ доступа к объекту класса? (он должен работать как статическими, так и нестатическими методами)

1 Ответ

4 голосов
/ 26 октября 2009

Как уже упоминалось в этой теме :

<Type>.class это не обычное простое имя, а TypeLiteral. Поэтому я думаю, что ваш код должен выглядеть примерно так:

TypeLiteral tr = ast.newTypeLiteral();
tr.setType(ast.newSimpleType(ast.newSimpleName("MyClass")));

, который в результате создает выражение "Myclass.class".

Кстати, есть действительно хороший плагин ASTView, с видом редактируемого в настоящий момент исходного файла Java AST. Это очень полезно при определении правильных типов узлов для различных языковых операторов. Вы можете получить его отсюда

(См. Также AST JDT core Dom Javadoc )

...