All Packages Class Hierarchy This Package Previous Next Index
java.lang.Object | +----epp.Type
型チェックパスにおいて、TypeChecker が Tree の各ノードを 型情報付きの Tree に変換します。 型情報付きの Tree からは、 tree.type() というメソッドで 型情報を取得できます。
type.tag() というメソッド呼び出しで、型の種類を得ることができます。 標準の Java の型を表す型のタグには、以下のものがあります。
:void, :char, :byte, :short, :int, :long, :float, :double, :boolean, :null :class :arrayOfこれらの型は、クラス Type のサブクラス、 PrimitiveType, NullType, ClassType, ArrayType で表現されます。 ClassType, ArrayType の内部にアクセスする方法については、 それぞれのクラスの説明を参照して下さい。 PrimitiveType, NullType は、内部構造を持ちません。
plug-in は、クラス Type のサブクラスを定義し、新たな tag を持たせることで、 Java 言語に新たな型を導入することができます。 しかし、新たな primitive 型を追加することはできません。
クラス Type は、型を表現するために必要な情報を保持するだけで、 「型の意味」は一切定義しません。 型の意味は、 TypeSystem を定義するメソッド群や、 TypeChecker オブジェクトに よって定義されます。
この javadoc には含まれていませんが、 組み込み型のインスタンスを保持する以下の static variable が定義されています。
Type.Tnull Type.Tvoid Type.Tchar Type.Tbyte Type.Tshort Type.Tint Type.Tlong Type.Tfloat Type.Tdouble Type.Tboolean Type.TString // java.lang.String Type.TObject // java.lang.Object Type.TClass // java.lang.Class
public Type(Symbol tag)
public static Obj epp()equals
public static boolean equals(Type type1, Type type2)
public static boolean isSuperType(Type type1, Type type2)
public static Tree coerce(Type type, Tree tree)
public static FieldInfo selectField(Type targetType, Symbol fieldName)
public static Object[] typeCheckAndSelectMethod(Type targetType, Symbol methodName, Tree argumentList)
public static void typeCheckBlockStatements(int i, Tree args[], TreeVec newArgs)
public boolean isPrimitiveType()
:null, :class, :arrayOf は primitive 型ではありません。
public Symbol tag()
public ClassInfo classInfo()
public abstract Tree toTree()
public Type print()
All Packages Class Hierarchy This Package Previous Next Index