A collection of utility methods used to deal with traits.
Modifiers | Name | Description |
---|---|---|
static @interface |
Traits.Implemented |
Internal annotation used to indicate which methods in a trait interface have a default implementation. |
static @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 |
TRAITBRIDGE_CLASSNODE |
|
static Class |
TRAIT_CLASS |
|
static ClassNode |
TRAIT_CLASSNODE |
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 String[] |
decomposeSuperCallName(String origName) Returns the name of a method without the super trait specific prefix. |
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 interfacesReturns the name of a method without the super trait specific prefix. If the method name doesn't correspond to a super trait method call, the result will be null.
origName
- the name of a methodConverts 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