Package org.codehaus.groovy.ast
Class ClassHelper
java.lang.Object
org.codehaus.groovy.ast.ClassHelper
public class ClassHelper extends Object
Helper for
ClassNode
and classes handling them. Contains a set of
pre-defined instances for the most used types and some code for cached node
creation and basic handling.-
Field Summary
-
Constructor Summary
Constructors Constructor Description ClassHelper()
-
Method Summary
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
isFunctionalInterface(ClassNode type)
static boolean
isGeneratedFunction(ClassNode type)
Checks if the type is a generated function, i.e.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(Class c)
Creates a ClassNode using a given class.static ClassNode[]
make(Class[] classes)
Creates an array of ClassNodes using an array of classes.static ClassNode
make(Class c, boolean includeGenerics)
static ClassNode
make(String name)
Creates a ClassNode using a given class.static ClassNode
makeCached(Class c)
static ClassNode
makeReference()
static ClassNode
makeWithoutCaching(Class c)
static ClassNode
makeWithoutCaching(Class c, boolean includeGenerics)
static ClassNode
makeWithoutCaching(String name)
Creates a ClassNode using a given class.
-
Field Details
-
TUPLE_CLASSES
-
DYNAMIC_TYPE
-
OBJECT_TYPE
-
CLOSURE_TYPE
-
GSTRING_TYPE
-
RANGE_TYPE
-
PATTERN_TYPE
-
STRING_TYPE
-
SCRIPT_TYPE
-
BINDING_TYPE
-
THROWABLE_TYPE
-
boolean_TYPE
-
char_TYPE
-
byte_TYPE
-
int_TYPE
-
long_TYPE
-
short_TYPE
-
double_TYPE
-
float_TYPE
-
Byte_TYPE
-
Short_TYPE
-
Integer_TYPE
-
Long_TYPE
-
Character_TYPE
-
Float_TYPE
-
Double_TYPE
-
Boolean_TYPE
-
BigInteger_TYPE
-
BigDecimal_TYPE
-
Number_TYPE
-
VOID_TYPE
-
void_WRAPPER_TYPE
-
METACLASS_TYPE
-
Iterator_TYPE
-
Annotation_TYPE
-
ELEMENT_TYPE_TYPE
-
AUTOCLOSEABLE_TYPE
-
SERIALIZABLE_TYPE
-
SERIALIZEDLAMBDA_TYPE
-
MAP_TYPE
-
LIST_TYPE
-
Enum_Type
-
CLASS_Type
-
TUPLE_TYPE
-
REFERENCE_TYPE
-
COMPARABLE_TYPE
-
GROOVY_OBJECT_TYPE
-
GENERATED_LAMBDA_TYPE
-
GENERATED_CLOSURE_Type
-
GROOVY_INTERCEPTABLE_TYPE
-
GROOVY_OBJECT_SUPPORT_TYPE
-
EMPTY_TYPE_ARRAY
-
OBJECT
- See Also:
- Constant Field Values
-
-
Constructor Details
-
ClassHelper
public ClassHelper()
-
-
Method Details
-
makeCached
-
make
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
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
-
makeWithoutCaching
-
makeWithoutCaching
-
makeWithoutCaching
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
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
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)
-
getUnwrapper
-
isPrimitiveType
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
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
-
makeReference
-
isCachedType
-
isSAMType
-
isFunctionalInterface
-
isGeneratedFunction
Checks if the type is a generated function, i.e. closure or lambda.- Since:
- 3.0.0
-
findSAM
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
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
-