2009-07-03 13 views
1

Javaファイルのスーパークラス名を取得する必要があります(クラスを拡張するため、そのクラス名が必要です)。これを行うために、私はASTParserを使い始めましたが、私は初心者ですから、例やイラストを参考にすることができます。私はどのようにASTがJavaファイル構造を保持しているかを理解するためにASTViewを使用しますが、visit()、endvisit()関数を試している間は動きません。詳細な例は見つけられませんでした。事前にどのようにASTParserを使用してJavaファイルからSuperClass名を取得できますか?

おかげで...

答えて

2

あなたがすでに持っていたどのくらいの多くを言いませんでした。

ビジターでは、visit(TypeDeclaration node)をオーバーライドし、ノード上でgetSuperclassType()を呼び出します。

trueを返すと、型宣言内で解析が続行されます。それ以外の場合は、解析が中止されます。

+0

;それはうまくいった。あなたが知っている詳細でこれらの訪問機能を説明するサイトはありますか? – Erhan

+0

まず、Eclipseに格納されているJavaモデルを理解しておくことです。 TypeDeclarationが何であるかを知るだけで、そこから知識を構築することができます。あなたはすでにそれを見ているかもしれませんが、その場合には、Eclipseのヘルプをお勧めします... JDT Plug-in Developer Guideの下で、「Java Model」と「Java Codeの操作」を参照してください。 http://www.ibm.com/developerworks/opensource/library/os-ast/ ASTParsingの一般的な使用方法を文書化しています。 –

1

あなたの代わりにあなたのコード内のClassクラスのgetSuperClass()メソッドを使用してもらえますか?

getSuperClass()

+0

いいえ、実際に私が選択したパッケージの下にあるすべてのJavaファイルを解析するためにEclipseプラグインをdevolopingよ。だから私はICompilationUnitをASTParserで解析する準備ができています。そして、私が持っているJavaファイルの種類を決定したい。このプロジェクトでは、そのファイルがどのスーパークラスを拡張するかだけを検索することによって、タイプを判別できます。ですからASTParserとvisit()関数を使用しなければなりません。しかし、私はこの科目で初心者です。ファイルのASTを走査し、そこからデータを取り出す例は役に立ちます。途中でありがとう。ありがとうございます; – Erhan

0

このコードは動作します。..

IType type = ...; 

ITypeHierarchy a = type.newSupertypeHierarchy(new NullProgressMonitor()); 
     IType[] superTypes = a.getAllSupertypes(type); 
     if(superTypes.length == 1 && superTypes[0].getKey().equals("Ljava/lang/Object;")){ 
      this.isSuperClassObject = true; 
     } 
     else{ 
      this.isSuperClassObject = false; 
     } 
関連する問題