我正在尝试使用's Dom 方法添加StaticClassName.class
对现有类的字段访问的调用。JDT
当我IllegalArgumentException
尝试使用ast.newSimpleName("class")
.
我认为这是因为JDT
当它也用作字段名称时将其视为关键字。
无论如何要JDT
接受“类”作为标识符名称或访问类对象的另一种方式?(它必须在静态和非静态方法中工作)
我正在尝试使用's Dom 方法添加StaticClassName.class
对现有类的字段访问的调用。JDT
当我IllegalArgumentException
尝试使用ast.newSimpleName("class")
.
我认为这是因为JDT
当它也用作字段名称时将其视为关键字。
无论如何要JDT
接受“类”作为标识符名称或访问类对象的另一种方式?(它必须在静态和非静态方法中工作)
正如这个线程中提到的:
<Type>.class
不是一个通常的简单名称,而是一个TypeLiteral
. 所以我认为你的代码应该更像这样:
TypeLiteral tr = ast.newTypeLiteral();
tr.setType(ast.newSimpleType(ast.newSimpleName("MyClass")));
结果创建表达式“
Myclass.class
”。顺便说一句,有一个非常好的
ASTView
插件,可以查看当前编辑的 Java 源文件AST
。这对于确定不同语言语句的正确节点类型非常有帮助。你可以从这里得到它