0

これを変換するためにASTRewriteを使用しています:

new Targect1().asd(a);

これに:

Targect1 temp1 = new Targect1();
temp1.asd(a);

これは私のコードです:

String temp_identifier = getNextVariableId();
VariableDeclarationFragment fragment = node.getAST().newVariableDeclarationFragment();
fragment.setName(node.getAST().newSimpleName(temp_identifier));
ClassInstanceCreation creation = (ClassInstanceCreation)rewrite.createCopyTarget(node.getExpression()));
fragment.setInitializer(creation);
VariableDeclarationStatement previous_declaration = node.getAST().newVariableDeclarationStatement(fragment);
rewrite.replace(node, previous_declaration,null);

終了していませんが、フラグメントの値を確認すると、内部でメソッド宣言が取得されますが、型については何もありません。検査すると、次のように表示されます。

temp1 = new MISSING()
4

1 に答える 1

0

ASTRewrite.createCopyTarget(...)プレースホルダ ノードのみを作成します。を呼び出すまで、式の実際のコピーは作成されませんASTRewrite.rewriteAST()new MISSING()これが、検査時に表示される理由ですfragment

すぐにコピーを強制したい場合は、を使用する必要がありますASTNode.copySubtree(AST target, ASTNode node)

于 2014-01-14T16:39:15.593 に答える