簡単なコード生成を行うためにEclipseプラグインを作成しています。変更する必要のあるメソッドを表すIMethodを取得することはできますが、実際にその本体に追加のコードを記述する方法がわかりません。これはASTノードで実行できることを知っているので、IMethodとMethodDeclarationなどの間で変換する方法はありますか?
1 に答える
IMethodはJDTのJavaモデルのクラスであり、MethodDeclarationはJDTASTのノードクラスです。JavaモデルはASTとは関係がありません。ただし、モデルを使用してASTを作成できます。通常、ICompilationUnit(Javaソースファイルを表す)が使用されますが、文字列からASTを作成することもできます。
この記事をチェックすることをお勧めします
編集:
おそらく「直接接続なし」の方が適切な表現だったでしょう。JDTFAQには次のようなものがあります。
IBinding、IJavaElement、ASTNodeのいずれかに移動するにはどうすればよいですか?
[...]
IJavaElementからIBindingへ
バインディングキーのみが必要で、バインディングオブジェクト自体は必要ない場合は、IJavaElementのサブタイプで「getKey()」メソッドを探します。このメソッドはバインディングキーを返します。これは、次のポイントを参照するなど、多くの状況で役立ちます。IJavaElementのすべてのサブタイプに対応するバインディングがあるわけではありません。たとえば、ITypeとIMethodには1つありますが、IPackageFragmentとIImportContainerにはありません。
バインディングオブジェクトが本当に必要な場合は、「org.eclipse.jdt.core.dom.ASTParser.createBindings(IJavaElement []、IProgressMonitor)」を使用できます。この操作は、バインディングを作成する必要があるため、バインディングキーを取得するだけの場合に比べて、少しコストがかかることに注意してください。
IJavaElementからその宣言ASTNodeまで
org.eclipse.jdt.core.dom.CompilationUnit.findDeclaringNode(String)-文字列パラメーターはバインディングキーです。前のポイントを参照してください。