ast.newSimpleName()方法有问题。
我无法创建排序'SomeJava.class'的SimpleName。但该方法适用于'SWT.None'或'SomeJava.None'等名称。
以下是代码:
MethodInvocation loggerInstance = ast.newMethodInvocation();
loggerInstance.setExpression(ast.newSimpleName("Logger"));
loggerInstance.setName(ast.newSimpleName("getLogger"));
String[] name1 = {className.replace(".java", ""),"None"};
String[] name2 = {className.replace(".java", ""), "class"};
loggerInstance.arguments().add(ast.newName(name1)); // This works
loggerInstance.arguments().add(ast.newName(name2)); // This doesn't
我应该使用除SimpleName之外的任何其他东西吗?提前谢谢。
编辑 :这是我想要构建的语句:
Logger.getLogger(ClientTest.class);
在我的分析中,我发现使用“class”文字时会出现问题。不知道如何克服这一点。
ast.newName("class");
ast.newSimpleName("class");
答案 0 :(得分:1)
使用ASTView插件(http://www.eclipse.org/jdt/ui/astview/index.php)查看“ClientTest.class”的节点类型,然后构造该类型的节点。 / p>
答案 1 :(得分:0)
从ASTView获得。最后下载并安装它。 :)
它应该是作为TypeLiteral生成的,而不是SimpleName / Name。
TypeLiteral typeLiteral = ast.newTypeLiteral();
typeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className)));