public abstract class Traits extends Object
Modifier and Type | Class and 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.
|
Modifier and Type | Field and Description |
---|---|
static ClassNode |
GENERATED_PROXY_CLASSNODE |
static ClassNode |
IMPLEMENTED_CLASSNODE |
static ClassNode |
SELFTYPE_CLASSNODE |
static String |
STATIC_THIS_OBJECT |
static String |
THIS_OBJECT |
static Class<Trait> |
TRAIT_CLASS |
static ClassNode |
TRAIT_CLASSNODE |
static ClassNode |
TRAITBRIDGE_CLASSNODE |
Constructor and Description |
---|
Traits() |
Modifier and Type | Method 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 origName)
Returns the name of a method without the super trait specific prefix.
|
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
|
static <T> 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(Method method)
Indicates whether a method in a trait interface has a default implementation.
|
static boolean |
hasDefaultImplementation(MethodNode 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(Class<?> clazz)
Returns true if the specified class is a trait.
|
static boolean |
isTrait(ClassNode cNode)
Returns true if the specified class node is a trait.
|
public static final ClassNode IMPLEMENTED_CLASSNODE
public static final ClassNode TRAITBRIDGE_CLASSNODE
public static final ClassNode TRAIT_CLASSNODE
public static final ClassNode GENERATED_PROXY_CLASSNODE
public static final ClassNode SELFTYPE_CLASSNODE
public static final String THIS_OBJECT
public static final String STATIC_THIS_OBJECT
public static boolean isTrait(ClassNode cNode)
cNode
- a class node to testpublic static boolean isTrait(Class<?> clazz)
clazz
- a class to testpublic static boolean isAnnotatedWithTrait(ClassNode cNode)
Trait
interface.cNode
- a class nodeTrait
interface.public static boolean hasDefaultImplementation(MethodNode method)
method
- a method nodepublic static boolean hasDefaultImplementation(Method method)
method
- a method nodepublic static boolean isBridgeMethod(Method someMethod)
someMethod
- a method nodepublic static Method getBridgeMethodTarget(Method someMethod)
someMethod
- a method nodepublic static <T> T getAsType(Object self, Class<T> clazz)
DefaultGroovyMethods.asType(java.lang.Object, Class)
self
- an object to be coerced to some classclazz
- the class to be coerced topublic static String[] decomposeSuperCallName(String origName)
origName
- the name of a methodpublic static LinkedHashSet<ClassNode> collectAllInterfacesReverseOrder(ClassNode cNode, LinkedHashSet<ClassNode> interfaces)
cNode
- a class nodeinterfaces
- ordered set of interfacespublic static LinkedHashSet<ClassNode> collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes)
receiver
- a class node that may implement a traitselfTypes
- a collection where the list of self types will be writtenpublic static LinkedHashSet<ClassNode> collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes, boolean checkInterfaces, boolean checkSuper)
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