public class MetaClassRegistryImpl extends Object implements MetaClassRegistry
A registry of MetaClass instances which caches introspection and reflection information and allows methods to be dynamically added to existing classes at runtime
Modifiers | Name | Description |
---|---|---|
static int |
DONT_LOAD_DEFAULT |
|
static String |
EXTENSION_DISABLE_PROPERTY |
|
static int |
LOAD_DEFAULT |
|
static String |
MODULE_META_INF_FILE |
|
Constructor and description |
---|
MetaClassRegistryImpl() |
MetaClassRegistryImpl(int loadDefault) |
MetaClassRegistryImpl(boolean useAccessible)
|
MetaClassRegistryImpl(int loadDefault, boolean useAccessible) |
Type Params | Return Type | Name and description |
---|---|---|
|
public void |
addMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener) Adds a listener for constant metaclasses. |
|
public void |
addNonRemovableMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener) Adds a listener for constant metaclasses. |
|
protected void |
fireConstantMetaClassUpdate(Object obj, Class c, MetaClass oldMC, MetaClass newMc) Causes the execution of all registered listeners. |
|
public static MetaClassRegistry |
getInstance(int includeExtension) Singleton of MetaClassRegistry. |
|
public FastArray |
getInstanceMethods() |
|
public final MetaClass |
getMetaClass(Class theClass) |
|
public MetaClass |
getMetaClass(Object obj) |
|
public MetaClassRegistry.MetaClassCreationHandle |
getMetaClassCreationHandler() Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon |
|
public MetaClassRegistryChangeEventListener[] |
getMetaClassRegistryChangeEventListeners() Gets an array of all registered ConstantMetaClassListener instances. |
|
public ExtensionModuleRegistry |
getModuleRegistry() |
|
public FastArray |
getStaticMethods() |
|
public boolean |
hasNext() |
|
public Iterator |
iterator() Returns an iterator to iterate over all constant metaclasses. |
|
public Object |
next() |
|
public void |
registerExtensionModuleFromProperties(Properties properties, ClassLoader classLoader, Map<CachedClass, List<MetaMethod>> map) |
|
public void |
remove() |
|
public void |
removeMetaClass(Class theClass) |
|
public void |
removeMetaClassRegistryChangeEventListener(MetaClassRegistryChangeEventListener listener) Removes a constant metaclass listener. |
|
public void |
setMetaClass(Class theClass, MetaClass theMetaClass) |
|
public void |
setMetaClass(Object obj, MetaClass theMetaClass) |
|
public void |
setMetaClassCreationHandle(MetaClassRegistry.MetaClassCreationHandle handle) Sets a handle internally used to create MetaClass implementations. |
|
public boolean |
useAccessible() |
useAccessible
- defines whether the AccessibleObject.setAccessible
method will be called to enable access to all methods when using reflectionAdds a listener for constant metaclasses.
listener
- the listenerAdds a listener for constant metaclasses. This listener cannot be removed!
listener
- the listenerCauses the execution of all registered listeners. This method is used mostly internal to kick of the listener notification. It can also be used by subclasses to achieve the same.
obj
- object instance if the MetaClass change is on a per-instance metaclass (or null if global)c
- the classoldMC
- the old MetaClassnewMc
- the new MetaClassSingleton of MetaClassRegistry.
Gets a handle internally used to create MetaClass implementations WARNING: experimental code, likely to change soon
Gets an array of all registered ConstantMetaClassListener instances.
Returns an iterator to iterate over all constant metaclasses. This iterator can be seen as making a snapshot of the current state of the registry. The snapshot will include all metaclasses that has been used unless they are already collected. Collected metaclasses will be skipped automatically, so you can expect that each element of the iteration is not null. Calling this method is thread safe, the usage of the iterator is not.
Removes a constant metaclass listener.
listener
- the listenerSets a handle internally used to create MetaClass implementations. When replacing the handle with a custom version, you should reuse the old handle to keep custom logic and to use the default logic as fall back. WARNING: experimental code, likely to change soon
handle
- the handleCopyright © 2003-2022 The Apache Software Foundation. All rights reserved.