package bluej.debugger.gentype;

import java.util.Map;


| Base class for primitive/built-in types. | | @author Davin McCall | public class JavaPrimitiveType extends JavaType{ private static JavaPrimitiveType [] primitiveTypes = new JavaPrimitiveType[JavaType.JT_MAX+1]; private static String [] typeNames = { "void", "null", "boolean", "char", "byte", "short", "int", "long", "float", "double" }; private static int assignableFrom [][] = new int [JT_MAX+1][]; { assignableFrom[JT_VOID] = new int[] { }; assignableFrom[JT_NULL] = new int[] { }; assignableFrom[JT_BOOLEAN] = new int[] { JT_BOOLEAN }; assignableFrom[JT_CHAR] = new int[] { JT_CHAR }; assignableFrom[JT_BYTE] = new int[] { JT_BYTE }; assignableFrom[JT_SHORT] = new int[] { JT_SHORT, JT_BYTE }; assignableFrom[JT_INT] = new int[] { JT_INT, JT_BYTE, JT_SHORT, JT_CHAR }; assignableFrom[JT_LONG] = new int[] { JT_LONG, JT_BYTE, JT_SHORT, JT_CHAR, JT_INT }; assignableFrom[JT_FLOAT] = new int[] { JT_FLOAT, JT_LONG, JT_BYTE, JT_SHORT, JT_CHAR, JT_INT, JT_LONG }; assignableFrom[JT_DOUBLE] = new int[] { JT_DOUBLE, JT_LONG, JT_BYTE, JT_SHORT, JT_CHAR, JT_INT, JT_LONG, JT_FLOAT }; } private int myIndex;
| | Private constructor. Use "getXXX" methods to get a primitive instance. | */ protected JavaPrimitiveType(int index) { myIndex = index; } private static JavaPrimitiveType getType(int v) { if (primitiveTypes[v] == null) { | |
primitiveTypes[v] = new JavaPrimitiveType(v); | |
} | | return primitiveTypes[v]; | | } | | /** | Obtain an instance of "void". | */ public static JavaPrimitiveType getVoid() { return getType(JT_VOID); } public static JavaPrimitiveType getNull() { return getType(JT_NULL); } public static JavaPrimitiveType getBoolean() | | { | | return getType(JT_BOOLEAN); | | } | | public static JavaPrimitiveType getByte() | | { | | return getType(JT_BYTE); | | } | | public static JavaPrimitiveType getChar() | | { | | return getType(JT_CHAR); | | } | | public static JavaPrimitiveType getShort() | | { | | return getType(JT_SHORT); | | } | | public static JavaPrimitiveType getInt() | | { | | return getType(JT_INT); | | } | | public static JavaPrimitiveType getLong() | | { | | return getType(JT_LONG); | | } | | public static JavaPrimitiveType getFloat() | | { | | return getType(JT_FLOAT); | | } | | public static JavaPrimitiveType getDouble() | | { | | return getType(JT_DOUBLE); | | } | | @Override | | public String toString() | | { | | return typeNames[myIndex]; | | } | | @Override | | public String arrayComponentName() | | { | | // Simple lookup by index. It's not possible to have an array of | | // void or null types. | | return "!!ZCBSIJFD".substring(myIndex, myIndex + 1); } @Override public boolean isAssignableFrom(JavaType o) { int [] assignables = assignableFrom[myIndex]; for (int i = 0; i < assignables.length; i++) { | | if (o.typeIs(assignables[i])) | | return true; | | } | | return false; | | } | | @Override | | public JavaType getErasedType() | | { | | return this; | | } | | /* | For primitive types, "isAssignableFromRaw" is equivalent to | * "isAssignableFrom". */ @Override public boolean isAssignableFromRaw(JavaType t) { return isAssignableFrom(t); } @Override public boolean isPrimitive() { return true; } | | @Override | | public boolean isNumeric() | | { | | return myIndex >= JT_LOWEST_NUMERIC; | | } | | @Override | | public boolean isIntegralType() | | { | | return myIndex >= JT_CHAR && myIndex <= JT_LONG; | | } | | @Override | | public boolean typeIs(int v) | | { | | return myIndex == v; | | } | | @Override | | public JavaType mapTparsToTypes(Map<String, ? extends GenTypeParameter> tparams) | | { | | return this; | | } | | @Override | | public GenTypeArray getArray() | | { | | return new GenTypeArray(this); | | } | | @Override | | public JavaType getCapture() | | { | | return this; | | } | | @Override | | public void getParamsFromTemplate(Map<String, GenTypeParameter> map, | | GenTypeParameter template) | | { | | } | | @Override | | public GenTypeSolid getLowerBound() | | { | | return null; | | } | | @Override | | public JavaPrimitiveType getUpperBound() | | { | | return this; | | } | | @Override | | public String toTypeArgString(NameTransform nt) | | { | | return toString(); | | } | | @Override | | public boolean equals(JavaType other) | | { | | if (other == null) { | | return false; | | } | | return other.typeIs(myIndex); | | } | | @Override | | public boolean isWildcard() | | { | | return false; | | } | | }
top, use, map, class JavaPrimitiveType




44 neLoCode + 128 LoComm