无法为'.class'字符串模式创建SimpleName

时间:2012-08-23 05:30:49

标签: java abstract-syntax-tree eclipse-jdt

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

2 个答案:

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