Package org.codehaus.groovy.ast
Class ClassHelper
- java.lang.Object
-
- org.codehaus.groovy.ast.ClassHelper
-
public class ClassHelper extends java.lang.Object
This class is a Helper for ClassNode and classes handling ClassNodes. It does contain a set of predefined ClassNodes for the most used types and some code for cached ClassNode creation and basic ClassNode handling
-
-
Field Summary
-
Constructor Summary
Constructors Constructor Description ClassHelper()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static MethodNode
findSAM(ClassNode type)
Returns the single abstract method of a class node, if it is a SAM type, or null otherwise.static ClassNode
getNextSuperClass(ClassNode clazz, ClassNode goalClazz)
Returns a super class or interface for a given class depending on a given target.static ClassNode
getUnwrapper(ClassNode cn)
static ClassNode
getWrapper(ClassNode cn)
Creates a ClassNode containing the wrapper of a ClassNode of primitive type.static boolean
isCachedType(ClassNode type)
static boolean
isNumberType(ClassNode cn)
static boolean
isPrimitiveType(ClassNode cn)
Test to determine if a ClassNode is a primitive type.static boolean
isSAMType(ClassNode type)
static boolean
isStaticConstantInitializerType(ClassNode cn)
Test to determine if a ClassNode is a type belongs to the list of types which are allowed to initialize constants directly in bytecode instead of using <cinit>static ClassNode
make(java.lang.Class c)
Creates a ClassNode using a given class.static ClassNode[]
make(java.lang.Class[] classes)
Creates an array of ClassNodes using an array of classes.static ClassNode
make(java.lang.Class c, boolean includeGenerics)
static ClassNode
make(java.lang.String name)
Creates a ClassNode using a given class.static ClassNode
makeCached(java.lang.Class c)
static ClassNode
makeReference()
static ClassNode
makeWithoutCaching(java.lang.Class c)
static ClassNode
makeWithoutCaching(java.lang.Class c, boolean includeGenerics)
static ClassNode
makeWithoutCaching(java.lang.String name)
Creates a ClassNode using a given class.
-
-
-
Field Detail
-
DYNAMIC_TYPE
public static final ClassNode DYNAMIC_TYPE
-
OBJECT_TYPE
public static final ClassNode OBJECT_TYPE
-
VOID_TYPE
public static final ClassNode VOID_TYPE
-
CLOSURE_TYPE
public static final ClassNode CLOSURE_TYPE
-
GSTRING_TYPE
public static final ClassNode GSTRING_TYPE
-
LIST_TYPE
public static final ClassNode LIST_TYPE
-
MAP_TYPE
public static final ClassNode MAP_TYPE
-
RANGE_TYPE
public static final ClassNode RANGE_TYPE
-
PATTERN_TYPE
public static final ClassNode PATTERN_TYPE
-
STRING_TYPE
public static final ClassNode STRING_TYPE
-
SCRIPT_TYPE
public static final ClassNode SCRIPT_TYPE
-
REFERENCE_TYPE
public static final ClassNode REFERENCE_TYPE
-
BINDING_TYPE
public static final ClassNode BINDING_TYPE
-
THROWABLE_TYPE
public static final ClassNode THROWABLE_TYPE
-
boolean_TYPE
public static final ClassNode boolean_TYPE
-
char_TYPE
public static final ClassNode char_TYPE
-
byte_TYPE
public static final ClassNode byte_TYPE
-
int_TYPE
public static final ClassNode int_TYPE
-
long_TYPE
public static final ClassNode long_TYPE
-
short_TYPE
public static final ClassNode short_TYPE
-
double_TYPE
public static final ClassNode double_TYPE
-
float_TYPE
public static final ClassNode float_TYPE
-
Byte_TYPE
public static final ClassNode Byte_TYPE
-
Short_TYPE
public static final ClassNode Short_TYPE
-
Integer_TYPE
public static final ClassNode Integer_TYPE
-
Long_TYPE
public static final ClassNode Long_TYPE
-
Character_TYPE
public static final ClassNode Character_TYPE
-
Float_TYPE
public static final ClassNode Float_TYPE
-
Double_TYPE
public static final ClassNode Double_TYPE
-
Boolean_TYPE
public static final ClassNode Boolean_TYPE
-
BigInteger_TYPE
public static final ClassNode BigInteger_TYPE
-
BigDecimal_TYPE
public static final ClassNode BigDecimal_TYPE
-
Number_TYPE
public static final ClassNode Number_TYPE
-
void_WRAPPER_TYPE
public static final ClassNode void_WRAPPER_TYPE
-
METACLASS_TYPE
public static final ClassNode METACLASS_TYPE
-
Iterator_TYPE
public static final ClassNode Iterator_TYPE
-
Enum_Type
public static final ClassNode Enum_Type
-
Annotation_TYPE
public static final ClassNode Annotation_TYPE
-
ELEMENT_TYPE_TYPE
public static final ClassNode ELEMENT_TYPE_TYPE
-
CLASS_Type
public static final ClassNode CLASS_Type
-
COMPARABLE_TYPE
public static final ClassNode COMPARABLE_TYPE
-
GENERATED_CLOSURE_Type
public static final ClassNode GENERATED_CLOSURE_Type
-
GROOVY_OBJECT_SUPPORT_TYPE
public static final ClassNode GROOVY_OBJECT_SUPPORT_TYPE
-
GROOVY_OBJECT_TYPE
public static final ClassNode GROOVY_OBJECT_TYPE
-
GROOVY_INTERCEPTABLE_TYPE
public static final ClassNode GROOVY_INTERCEPTABLE_TYPE
-
EMPTY_TYPE_ARRAY
protected static final ClassNode[] EMPTY_TYPE_ARRAY
-
OBJECT
public static final java.lang.String OBJECT
- See Also:
- Constant Field Values
-
-
Method Detail
-
makeCached
public static ClassNode makeCached(java.lang.Class c)
-
make
public static ClassNode[] make(java.lang.Class[] classes)
Creates an array of ClassNodes using an array of classes. For each of the given classes a new ClassNode will be created- Parameters:
classes
- an array of classes used to create the ClassNodes- Returns:
- an array of ClassNodes
- See Also:
make(Class)
-
make
public static ClassNode make(java.lang.Class c)
Creates a ClassNode using a given class. A new ClassNode object is only created if the class is not one of the predefined ones- Parameters:
c
- class used to created the ClassNode- Returns:
- ClassNode instance created from the given class
-
make
public static ClassNode make(java.lang.Class c, boolean includeGenerics)
-
makeWithoutCaching
public static ClassNode makeWithoutCaching(java.lang.Class c)
-
makeWithoutCaching
public static ClassNode makeWithoutCaching(java.lang.Class c, boolean includeGenerics)
-
makeWithoutCaching
public static ClassNode makeWithoutCaching(java.lang.String name)
Creates a ClassNode using a given class. Unlike make(String) this method will not use the cache to create the ClassNode. This means the ClassNode created from this method using the same name will have a different reference- Parameters:
name
- of the class the ClassNode is representing- See Also:
make(String)
-
make
public static ClassNode make(java.lang.String name)
Creates a ClassNode using a given class. If the name is one of the predefined ClassNodes then the corresponding ClassNode instance will be returned. If the name is null or of length 0 the dynamic type is returned- Parameters:
name
- of the class the ClassNode is representing
-
getWrapper
public static ClassNode getWrapper(ClassNode cn)
Creates a ClassNode containing the wrapper of a ClassNode of primitive type. Any ClassNode representing a primitive type should be created using the predefined types used in class. The method will check the parameter for known references of ClassNode representing a primitive type. If Reference is found, then a ClassNode will be contained that represents the wrapper class. For example for boolean, the wrapper class is java.lang.Boolean.If the parameter is no primitive type, the redirected ClassNode will be returned
- Parameters:
cn
- the ClassNode containing a possible primitive type- See Also:
make(Class)
,make(String)
-
isPrimitiveType
public static boolean isPrimitiveType(ClassNode cn)
Test to determine if a ClassNode is a primitive type. Note: this only works for ClassNodes created using a predefined ClassNode- Parameters:
cn
- the ClassNode containing a possible primitive type- Returns:
- true if the ClassNode is a primitive type
- See Also:
make(Class)
,make(String)
-
isStaticConstantInitializerType
public static boolean isStaticConstantInitializerType(ClassNode cn)
Test to determine if a ClassNode is a type belongs to the list of types which are allowed to initialize constants directly in bytecode instead of using <cinit>Note: this only works for ClassNodes created using a predefined ClassNode
- Parameters:
cn
- the ClassNode to be tested- Returns:
- true if the ClassNode is of int, float, long, double or String type
- See Also:
make(Class)
,make(String)
-
isNumberType
public static boolean isNumberType(ClassNode cn)
-
makeReference
public static ClassNode makeReference()
-
isCachedType
public static boolean isCachedType(ClassNode type)
-
isSAMType
public static boolean isSAMType(ClassNode type)
-
findSAM
public static MethodNode findSAM(ClassNode type)
Returns the single abstract method of a class node, if it is a SAM type, or null otherwise.- Parameters:
type
- a type for which to search for a single abstract method- Returns:
- the method node if type is a SAM type, null otherwise
-
getNextSuperClass
public static ClassNode getNextSuperClass(ClassNode clazz, ClassNode goalClazz)
Returns a super class or interface for a given class depending on a given target. If the target is no super class or interface, then null will be returned. For a non-primitive array type, returns an array of the componentType's super class or interface if the target is also an array.- Parameters:
clazz
- the start classgoalClazz
- the goal class- Returns:
- the next super class or interface
-
-