All Packages Class Hierarchy This Package Previous Next Index
Class epp.TypeNameTable
java.lang.Object
|
+----epp.TypeNameTable
- public class TypeNameTable
- extends Object
クラス TypeNameTable は、「型の名前」を、完全限定名(fully qualified name)に
変換します。.
このクラスが扱う「型の名前」とは、 "(name ...)" の形をした Tree です。
配列型のように、構造を持った型は、扱いません。
変換は、次のルールにしたがって行なわれます。
- "int", "char" などの組み込み型の名前は、そのまま返されます。
- "java.util.Hashtable" のように、 "." を含んでいる名前はすでに
完全限定名なので、そのまま返されます。そのクラスが実際に存在するかどうかは
チェックされません。
- "Object" や "Tree" のような単純名(simple name)は、
Java の言語仕様にしたがって
それが表すクラスの完全限定名に変換されます。
見つからなかったり、一意に決まらない場合は、 EppUserError が
throw されます。
このテーブルのインスタンスは、動的変数 :typeNameTable に入れられています。
ただし、 Phase2 にならないとこのテーブルを利用することはできません。
(Java の言語仕様上、 Phase1 では、完全限定名への変換は不可能です。
カレントパッケージ中にどのようなクラスが存在するかに影響されるからです。)
完全限定名への変換は、処理中のファイルの pacakge 宣言、 import 宣言、
全ソースファイル中で定義されているクラス名、
CLASSPATH でアクセスできるクラス名を参照することによって、行なわれます。
-
TypeNameTable(Tree)
- 引数として、 CompilationUnit の tree を受け取り、
TypeNameTable を作って返します。.
-
doesClassExist(Tree)
- 完全限定名で表されるクラスが、実際に存在してアクセス可能ならば true 、
そうでないなら false を返します。.
-
isSamePackage(Tree)
- 現在処理中のパッケージと、 fullName が属するパッケージが同じなら
true 、そうでないなら false を返します。.
-
nameToFullName(Tree)
- 型名の Tree を 完全限定名を表す Tree に変換します。.
-
nameToFullNameSymbol(Tree)
- 型名の Tree を 完全限定名を表す Symbol に変換します。.
TypeNameTable
public TypeNameTable(Tree tree)
- 引数として、 CompilationUnit の tree を受け取り、
TypeNameTable を作って返します。.
nameToFullNameSymbol
public Symbol nameToFullNameSymbol(Tree tree)
- 型名の Tree を 完全限定名を表す Symbol に変換します。.
nameToFullName
public Tree nameToFullName(Tree tree)
- 型名の Tree を 完全限定名を表す Tree に変換します。.
doesClassExist
public boolean doesClassExist(Tree fullName)
- 完全限定名で表されるクラスが、実際に存在してアクセス可能ならば true 、
そうでないなら false を返します。.
このメソッドは、 nameToFullName と Type#resolveAmbiguousName から
呼ばれます。
- See Also:
- nameToFullName, resolveAmbiguousName
isSamePackage
public boolean isSamePackage(Tree fullName)
- 現在処理中のパッケージと、 fullName が属するパッケージが同じなら
true 、そうでないなら false を返します。.
All Packages Class Hierarchy This Package Previous Next Index