私の現在の理解では、JDTは、Javaコードを表現および操作するための2つの異なるインターフェースとクラス階層を提供します。
Javaモデル:Javaプロジェクトを表現する方法を提供します。作成は高速ですが、ASTクラス階層ほど多くの情報は含まれていません。たとえば、ソースファイル内の各要素の正確な位置に関する情報はありません(利用可能なAST内)。
AST:ソースコードのより詳細な表現に加えて、それを操作するための手段を提供します。
あれは正しいですか?
現在、I * Binding(IBindingで始まる)という名前のインターフェースの階層もあります(例:IMethodBinding)。たとえば、メソッドを処理するための3つの異なるタイプがあります。
- IMethod(Javaモデルから)
- MethodInvocation(ASTから、IMethodから取得できます)
- IMethodBinding
ドキュメントからIMethodBindingはASTからのMethodInvocationに非常に似ているように見えますが、明確な区別がわかりません。いつ使用する必要がありますか。誰かがこれを明確にしてくれませんか?