-その後のRTTI

クラスに対するクラスローダーのように、ファクトリ的なPageRTTILoaderを作ったらいくらかキレイになりました。ProjectRTTIImplを隠蔽できたのです。

public class ProjectRTTILoader {
  private IJavaProject project;
  private ProjectRTTIImpl host;
  public ProjectRTTILoader(IJavaProject project) {
    this(project, null);
  }
  ProjectRTTILoader(IJavaProject project, ProjectRTTIImpl host) {
    this.project = project;
    this.host = host;
  }
  public ProjectRTTI loadRTTI(String name) {
    return new ProjectRTTIImpl(project, name, host);
  }
}

パッケージスコープのコンストラクタはProjectRTTI#getRTTILoader()でローダーを提供するときに使うものです。「host」というのがミソです。これは、「java.lang.String」というようにnameがこなく、「String」で入ってきたときの名前解決をするための解釈基点となるものです。さて、放課後です。OGNLをやりますかな。
まずは作りかけのものですがいつものところに更新しておきます。いくらかバグFIXしてます。