Java 无法为';创建SimpleName;。类别';字符串模式

Java 无法为';创建SimpleName;。类别';字符串模式,java,abstract-syntax-tree,eclipse-jdt,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.setNa

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

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

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

从ASTView获得。最后下载并安装了它。:)

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

TypeLiteral typeLiteral = ast.newTypeLiteral();
typeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className)));

从ASTView得到的。最后下载并安装了它。:)

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

TypeLiteral typeLiteral = ast.newTypeLiteral();
typeLiteral.setType(ast.newSimpleType(ast.newSimpleName(className)));

类不允许作为名称。它是一个重新设置的关键字。因此,这种行为是有意义的。要获得更具体的答案,您应该添加用于创建ast的工具。不允许将类作为名称,因为它是一个重新设置的关键字。因此,这种行为是有意义的。要获得更具体的答案,您应该添加用于创建ast的工具。太棒了!我希望你不再需要问这样的问题:-)太好了!我希望你不再需要问这样的问题了:-)