モジュール jdk.compiler
パッケージ com.sun.source.util

クラスTreeScanner<R,P>

java.lang.Object
com.sun.source.util.TreeScanner<R,P>
型パラメータ:
R - このビジターのメソッドの戻り型。 結果を返すことを必要としないビジターのVoidを使用する。
P - このビジターのメソッドに追加するパラメータの型。 追加のパラメータを必要としないビジターのVoidを使用する。
すべての実装されたインタフェース:
TreeVisitor<R,P>
直系の既知のサブクラス:
TreePathScanner

public class TreeScanner<R,P> extends Object implements TreeVisitor<R,P>
すべての子ツリー・ノードを巡回するTreeVisitorです。 特定の型のノードを巡回するには、対応するvisitXYZメソッドを単にオーバーライドします。 独自のメソッド内では、super.visitXYZを呼び出して、下位ノードを巡回します。

ツリー内の識別子ノードの数をカウントする例を次に示します。

   class CountIdentifiers extends TreeScanner<Integer,Void> {
      @Override
      public Integer visitIdentifier(IdentifierTree node, Void p) {
          return 1;
      }
      @Override
      public Integer reduce(Integer r1, Integer r2) {
          return (r1 == null ? 0 : r1) + (r2 == null ? 0 : r2);
      }
   }
 

実装要件:

visitXYZメソッドのデフォルトの実装では、次の結果になります。

  • 訪問中のノードに子がない場合、結果はnullになります。
  • ビジットされているノードに1つの子がある場合、その子でscanをコールした結果になります。 子は、単一のノードでも、ノードのリストでもかまいません。
  • ビジットされているノードに複数の子がある場合、scanを各子に順番にコールし、reduce(R, R)メソッドによって決定される累積結果と最初のスキャン後の各スキャン結果を組み合せることで結果が決定されます。 各子は、単純なノードまたはノードのリストのいずれかです。 reduceメソッドのデフォルトの動作では、visitXYZメソッドの結果は、最後にスキャンされた子の結果になります。

導入されたバージョン:
1.6