All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class edu.mit.ai.psg.jevaES.TypeMethods

java.lang.Object
   |
   +----edu.mit.ai.psg.jevaES.TypeMethods

public class TypeMethods
extends Object
Predicates and Methods for testing and comparing types.

Author:
CarlManning, caroma@ai.mit.edu
Copyright (c) 1997 Massachusetts Institute of Technology

Method Index

 o binaryCombineBitwiseTypes(Token, Class, Class)
 o binaryCombineNumericTypes(Token, Class, Class)
 o binaryPromoteType(Class, Class)
[JavaLangSpec1.0 sec 5.6.2 Binary Numeric Promotion]
 o canNarrowPrimitive(Class, Class)
[JavaLangSpec1.0 sec 5.1.3 Narrowing Primitive Conversions]
 o canNarrowPrimitiveConstant(Class, Class, ExpressionNode, IEnv)
[JavaLangSpec1.0 sec 5.2, 15.24]
check if expr is integer constant that fits in char, short, or byte.
 o canNarrowReference(Class, Class)
[JavaLangSpec1.0 sec 5.1.5 Narrowing Reference Conversions]
(does not check for methods that differ only in return type)
 o canWidenPrimitive(Class, Class)
[JavaLangSpec1.0 sec 5.1.2 Widening Primitive Conversions]
 o canWidenReference(Class, Class)
[JavaLangSpec1.0 sec 5.1.4 Widening Reference Conversions]
 o checkCastTypes(Class, Class)
check for impermissible casts [JavaLangSpec1.0 sec 5.5 Casting Conversion]
 o isAbstractClass(Class)
 o isApplicable(Class[], Class[])
 o isApplicable(Constructor, Class[])
 o isApplicable(Method, Class[])
[JavaLangSpec 15.11.2.1 Find Methods that are applicable (& accessible)]
Accessibility is not a concern, since only public methods are accessiblethrough reflection.
 o isAssignable(Class, ExpressionNode, IEnv)
[JavaLangSpec1.0 sec 5.2 Assignment Conversion] This checks for primitive as well as reference widenings.
 o isBindableType(Class, Class)
[JavaLangSpec1.0 sec 5.3 Method Invocation Conversion]
 o isClassType(Class)
Class is not primitive, array, nor interface
 o isFinalClass(Class)
 o isImplementation(Class, Class)
 o isIntegralType(Class)
primitive integer types of various sizes (byte, short, int, long)
 o isIntExpression(ExpressionNode, IEnv)
Check that array dims/indexes are int [JavaLangSpec1.0 sec15.9, 15.12]
 o isMoreSpecific(Constructor, Constructor)
 o isMoreSpecific(Method, Method)
[JavaLangSpec 15.11.2.2 Choose Most Specific Method]
Assumes method name matches
 o isNumericType(Class)
primitive numeric types
 o isReferenceType(Class)
 o isSubclass(Class, Class)
 o isSubinterface(Class, Class)
 o isThrowableClass(Throwable, Class[])
[JavaLangSpec 14.16 Throw statement]
 o makeArrayType(Class, int)
 o nameToPrimitiveType(String)
Get primitive type from its name, e.g., for "long" return long.class
 o toPrimitiveType(Class)
Get primitive type associated with wrapper, e.g., for a new Long(0) return long.class
 o toSourceString(Class)
Return source code declaration string for class even if it is an array, e.g., "int[][]" instead of "[[I", which is what type.getName() returns
 o unaryPromoteType(Class)
[JavaLangSpec1.0 sec 5.6.1 Unary Numeric Promotion]

Methods

 o isReferenceType
 public static final boolean isReferenceType(Class type)
 o isClassType
 public static final boolean isClassType(Class type)
Class is not primitive, array, nor interface

 o isNumericType
 public static final boolean isNumericType(Class type)
primitive numeric types

 o isIntegralType
 public static final boolean isIntegralType(Class type)
primitive integer types of various sizes (byte, short, int, long)

 o unaryPromoteType
 public static final Class unaryPromoteType(Class type)
[JavaLangSpec1.0 sec 5.6.1 Unary Numeric Promotion]

 o binaryPromoteType
 public static final Class binaryPromoteType(Class cX,
                                             Class cY)
[JavaLangSpec1.0 sec 5.6.2 Binary Numeric Promotion]

 o binaryCombineNumericTypes
 public static final Class binaryCombineNumericTypes(Token operator,
                                                     Class cX,
                                                     Class cY)
 o binaryCombineBitwiseTypes
 public static final Class binaryCombineBitwiseTypes(Token operator,
                                                     Class cX,
                                                     Class cY)
 o isAssignable
 public static final boolean isAssignable(Class receivingType,
                                          ExpressionNode expr,
                                          IEnv env) throws EvalException
[JavaLangSpec1.0 sec 5.2 Assignment Conversion] This checks for primitive as well as reference widenings.

Throws: EvalException
if expr has type err
 o isBindableType
 public static final boolean isBindableType(Class receivingType,
                                            Class exprType)
[JavaLangSpec1.0 sec 5.3 Method Invocation Conversion]

 o canWidenPrimitive
 public static final boolean canWidenPrimitive(Class to,
                                               Class from)
[JavaLangSpec1.0 sec 5.1.2 Widening Primitive Conversions]

 o canNarrowPrimitiveConstant
 public static final boolean canNarrowPrimitiveConstant(Class receivingType,
                                                        Class exprType,
                                                        ExpressionNode expr,
                                                        IEnv env) throws EvalException
[JavaLangSpec1.0 sec 5.2, 15.24]
check if expr is integer constant that fits in char, short, or byte.

Throws: EvalException
if expr has type err
 o canNarrowPrimitive
 public static final boolean canNarrowPrimitive(Class to,
                                                Class from)
[JavaLangSpec1.0 sec 5.1.3 Narrowing Primitive Conversions]

 o canWidenReference
 public static final boolean canWidenReference(Class to,
                                               Class from)
[JavaLangSpec1.0 sec 5.1.4 Widening Reference Conversions]

 o isFinalClass
 public static final boolean isFinalClass(Class aClass)
 o isAbstractClass
 public static final boolean isAbstractClass(Class aClass)
 o isSubinterface
 public static final boolean isSubinterface(Class sub,
                                            Class aSuper)
 o isSubclass
 public static final boolean isSubclass(Class sub,
                                        Class aSuper)
 o isImplementation
 public static final boolean isImplementation(Class sub,
                                              Class anInterface)
 o canNarrowReference
 public static final boolean canNarrowReference(Class to,
                                                Class from)
[JavaLangSpec1.0 sec 5.1.5 Narrowing Reference Conversions]
(does not check for methods that differ only in return type)

 o toPrimitiveType
 public static final Class toPrimitiveType(Class wrapperType)
Get primitive type associated with wrapper, e.g., for a new Long(0) return long.class

 o nameToPrimitiveType
 public static final Class nameToPrimitiveType(String name) throws ClassNotFoundException
Get primitive type from its name, e.g., for "long" return long.class

Throws: ClassNotFoundException
if not primitive type
 o toSourceString
 public static final String toSourceString(Class type)
Return source code declaration string for class even if it is an array, e.g., "int[][]" instead of "[[I", which is what type.getName() returns

 o makeArrayType
 public static final Class makeArrayType(Class baseType,
                                         int nDims)
 o checkCastTypes
 public static final void checkCastTypes(Class castType,
                                         Class exprType)
check for impermissible casts [JavaLangSpec1.0 sec 5.5 Casting Conversion]

 o isThrowableClass
 public static boolean isThrowableClass(Throwable thrown,
                                        Class throwClasses[])
[JavaLangSpec 14.16 Throw statement]

 o isApplicable
 public static final boolean isApplicable(Method method,
                                          Class argExprTypes[])
[JavaLangSpec 15.11.2.1 Find Methods that are applicable (& accessible)]
Accessibility is not a concern, since only public methods are accessiblethrough reflection.

 o isApplicable
 public static final boolean isApplicable(Constructor constructor,
                                          Class argExprTypes[])
 o isApplicable
 public static final boolean isApplicable(Class parameterTypes[],
                                          Class argExprTypes[])
 o isMoreSpecific
 public static final boolean isMoreSpecific(Method m1,
                                            Method m2)
[JavaLangSpec 15.11.2.2 Choose Most Specific Method]
Assumes method name matches

 o isMoreSpecific
 public static final boolean isMoreSpecific(Constructor c1,
                                            Constructor c2)
 o isIntExpression
 public static final boolean isIntExpression(ExpressionNode expr,
                                             IEnv env) throws EvalException
Check that array dims/indexes are int [JavaLangSpec1.0 sec15.9, 15.12]

Throws: EvalException
if expr has type err

All Packages  Class Hierarchy  This Package  Previous  Next  Index