Package groovy.lang
Interface MetaClassRegistry
- All Known Implementing Classes:
MetaClassRegistryImpl
public interface MetaClassRegistry
A MetaClassRegistry is an object that is responsible for managing a cache of MetaClass instances. Each
java.lang.Class instance has an associated MetaClass and client code can query this interface for the MetaClass for
a given associated java.lang.Class
- See Also:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
Class used as base for the creation of MetaClass implementations. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a metaclass change listener for constant metaclassesvoid
Adds a metaclass change listener for constant metaclasses.getMetaClass
(Class theClass) The main function of the registry If a metaclass exists then return it otherwise create one, put it in the registry and return itRetrieves the MetaClassCreationHandle that is responsible for constructing MetaClass instancesReturns all registered class change listener for constant metaclasses.iterator()
Gets a snapshot of the current constant metaclasses and returns it as Iterator.void
removeMetaClass
(Class theClass) Removes a cached MetaClass from the registryvoid
Removes a metaclass change listener for constant metaclassesvoid
setMetaClass
(Class theClass, MetaClass theMetaClass) Adds a metaclass to the registry for the given classvoid
Sets the MetaClassCreationHandle instance that is responsible for constructing instances
-
Method Details
-
getMetaClass
The main function of the registry If a metaclass exists then return it otherwise create one, put it in the registry and return it -
setMetaClass
Adds a metaclass to the registry for the given class- Parameters:
theClass
- The classtheMetaClass
- The MetaClass for theClass
-
removeMetaClass
Removes a cached MetaClass from the registry- Parameters:
theClass
- The Java class of the MetaClass to remove
-
getMetaClassCreationHandler
MetaClassRegistry.MetaClassCreationHandle getMetaClassCreationHandler()Retrieves the MetaClassCreationHandle that is responsible for constructing MetaClass instances- Returns:
- The MetaClassCreationHandle instance
-
setMetaClassCreationHandle
Sets the MetaClassCreationHandle instance that is responsible for constructing instances- Parameters:
handle
- The handle instance
-
addMetaClassRegistryChangeEventListener
Adds a metaclass change listener for constant metaclasses- Parameters:
listener
- - the update listener
-
addNonRemovableMetaClassRegistryChangeEventListener
void addNonRemovableMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener) Adds a metaclass change listener for constant metaclasses. This listener cannot be removed!- Parameters:
listener
- - the update listener
-
removeMetaClassRegistryChangeEventListener
Removes a metaclass change listener for constant metaclasses- Parameters:
listener
- - the update listener
-
getMetaClassRegistryChangeEventListeners
MetaClassRegistryChangeEventListener[] getMetaClassRegistryChangeEventListeners()Returns all registered class change listener for constant metaclasses.- Returns:
- an array containing all change listener
-
iterator
Iterator iterator()Gets a snapshot of the current constant metaclasses and returns it as Iterator. Modifications done using this Iterator will not cause a ConcurrentModificationException. If a MetaClass is removed using this Iterator, then the MetaClass will only be removed if the MetaClass was not replaced by another MetaClass in the meantime. If a MetaClass is added while using this Iterator, then it will be part of the Iteration. If a MetaClass replaces another constant metaclass, then the Iteration might show two metaclasses for the same class.Note: This Iterator may not be used with multiple threads.
- Returns:
- Iterator for the constant metaclasses
-