我正在生成Java代码作为字符串,我有像
这样的表达式parameter.field.method();
然后我用Eclipse JDT的ASTParser
和子表达式将生成的代码解析为AST
parameter.field
变为QualifiedName
,而不是FieldAccess
。这会导致问题,因为稍后我会清理限定名称(使用Clean Qualified Types Plugin中的代码)。
像“foo.bar”这样的表达式可以表示为限定词 名称(
QualifiedName
)或字段访问表达式(FieldAccess
) 包含简单的名称。要么是可以接受的,也没有办法 在他们之间做出选择,而不知道名称解决的问题 to(ASTParser
可能会返回)。
我应该生成什么,以便解析器能够明确地知道这是FieldAccess
?
(一个有趣的问题:Java编译器如何消除可能性之间的歧义?每当遇到QualifiedName
时,它还会尝试通过解析名称将其解释为FieldAccess
?)< / p>
答案 0 :(得分:1)
我找到的最小解决方案是围绕参数生成括号:
(parameter).field.method();