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から入手しました。最後にダウンロードしてインストールしました。:)

SimpleName / Nameとしてではなく、TypeLiteralとして生成する必要があります。

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