完全クラス名の取得

IType#getSuperInterfaceNames()で型が実装しているインタフェース名が取得できます。しかし、パッケージが付く場合と付かない場合があります。
パッケージが付かないと、JavaProject#findType(String)でITypeを取得できません。しかも、findType()に存在しないクラス名を指定すると、デバッグ時は秒単位で時間が掛かってしまいます。
Kijimunaのソースを眺めていたら、IType#resolveType(String)を発見しました。IType#getSuperInterfaceNames()で取得したインタフェースを与えると、パッケージ付きのインタフェース名を生成することができます。

String[][] result = baseType.resolveType(typeName);
if (result != null) {
  String pack = result[0][0];
  String cname = result[0][1];
  if ((pack == null) || (pack.length() == 0)) {
    pack = "";
  } else {
    pack = pack + ".";
  }
  typeName = pack + cname;
}

しかし、resolveType()は秒単位とまでは行きませんが、けっこう遅いです。しかも、デバッグ時だけではなくて、実行時も遅かったです。
StCategoryで使ってみたら、フィルタリング時の動作がもたつくようになってしまいました。とりあえず元に戻してみますが、親インタフェースの検索では使う必要がありそう。