1

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);

在我的分析过程中,我发现使用“类”字面量时会出现问题。不知道如何克服这一点。

    ast.newName("class");
    ast.newSimpleName("class");
4

2 回答 2

1

使用 ASTView 插件 (http://www.eclipse.org/jdt/ui/astview/index.php) 查看“ClientTest.class”的节点类型是什么,然后构造该类型的节点。

于 2012-08-24T00:11:10.420 回答
0

从 ASTView 得到它。终于下载安装了。:)

它应该是作为 TypeLiteral 生成的,而不是作为 SimpleName/Name 生成的。

TypeLiteral typeLiteral = ast.newTypeLiteral();
typeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className)));
于 2012-08-28T12:23:48.470 回答