A collection of utility methods used to deal with traits.
| Modifiers | Name | Description |
|---|---|---|
@interface |
Traits.Implemented |
Internal annotation used to indicate which methods in a trait interface have a default implementation. |
@interface |
Traits.TraitBridge |
Internal annotation used to indicate that a method is a bridge method to a trait default implementation. |
| Modifiers | Name | Description |
|---|---|---|
static ClassNode |
GENERATED_PROXY_CLASSNODE |
|
static ClassNode |
IMPLEMENTED_CLASSNODE |
|
static ClassNode |
SELFTYPE_CLASSNODE |
|
static String |
STATIC_THIS_OBJECT |
|
static String |
THIS_OBJECT |
|
static ClassNode |
TRAITBRIDGE_CLASSNODE |
|
static Class<Trait> |
TRAIT_CLASS |
|
static ClassNode |
TRAIT_CLASSNODE |
| Type Params | Return Type | Name and description |
|---|---|---|
|
static LinkedHashSet<ClassNode> |
collectAllInterfacesReverseOrder(ClassNode cNode, LinkedHashSet<ClassNode> interfaces)Collects all interfaces of a class node, but reverses the order of the declaration of direct interfaces of this class node. |
|
static LinkedHashSet<ClassNode> |
collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes)Collects all the self types that a type should extend or implement, given the traits is implements. |
|
static LinkedHashSet<ClassNode> |
collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes, boolean checkInterfaces, boolean checkSuper)Collects all the self types that a type should extend or implement, given the traits is implements. |
|
static String[] |
decomposeSuperCallName(String methodName)Returns the trait and method names derived from super-trait name scheme or null if the method name doesn't correspond to a trait method. |
|
static ClassNode |
findFieldHelper(ClassNode trait) |
|
static ClassNode |
findHelper(ClassNode trait) |
|
static ClassNode |
findStaticFieldHelper(ClassNode trait) |
|
static List<ClassNode> |
findTraits(ClassNode cNode)Find all traits associated with the given classnode |
<T> |
static T |
getAsType(Object self, Class<T> clazz)Converts a class implementing some trait into a target class. |
|
static Method |
getBridgeMethodTarget(Method someMethod)Reflection API to find the method corresponding to the default implementation of a trait, given a bridge method. |
|
static boolean |
hasDefaultImplementation(MethodNode method)Indicates whether a method in a trait interface has a default implementation. |
|
static boolean |
hasDefaultImplementation(Method method)Indicates whether a method in a trait interface has a default implementation. |
|
static boolean |
isAnnotatedWithTrait(ClassNode cNode)Returns true if the specified class node is annotated with the Trait interface. |
|
static boolean |
isBridgeMethod(Method someMethod)Reflection API to indicate whether some method is a bridge method to the default implementation of a trait. |
|
static boolean |
isTrait(ClassNode cNode)Returns true if the specified class node is a trait. |
|
static boolean |
isTrait(Class<?> clazz)Returns true if the specified class is a trait. |
Collects all interfaces of a class node, but reverses the order of the declaration of direct interfaces of this class node. This is used to make sure a trait implementing A,B where both A and B have the same method will take the method from B (latest), aligning the behavior with categories.
cNode - a class nodeinterfaces - ordered set of interfacesCollects all the self types that a type should extend or implement, given the traits is implements. Collects from interfaces and superclasses too.
receiver - a class node that may implement a traitselfTypes - a collection where the list of self types will be writtenCollects all the self types that a type should extend or implement, given the traits is implements.
receiver - a class node that may implement a traitselfTypes - a collection where the list of self types will be writtencheckInterfaces - should the interfaces that the node implements be collected toocheckSuper - should we collect from the superclass too Returns the trait and method names derived from super-trait name scheme
or null if the method name doesn't correspond to a trait method.
Find all traits associated with the given classnode
cNode - the given classnodeConverts a class implementing some trait into a target class. If the trait is a dynamic proxy and that the target class is assignable to the target object of the proxy, then the target object is returned. Otherwise, falls back to DefaultGroovyMethods.asType
self - an object to be coerced to some classclazz - the class to be coerced toReflection API to find the method corresponding to the default implementation of a trait, given a bridge method.
someMethod - a method nodeIndicates whether a method in a trait interface has a default implementation.
method - a method nodeIndicates whether a method in a trait interface has a default implementation.
method - a method nodeReturns true if the specified class node is annotated with the Trait interface.
cNode - a class nodeReflection API to indicate whether some method is a bridge method to the default implementation of a trait.
someMethod - a method nodeReturns true if the specified class node is a trait.
cNode - a class node to testReturns true if the specified class is a trait.
clazz - a class to test