[Java] Class ClosureMetaClass

  • org.codehaus.groovy.runtime.metaclass.ClosureMetaClass

A meta class for closures generated by the Groovy compiler. These classes have special characteristics this MetaClass uses. One of these is that a generated Closure has only additional doCall methods, all other methods are in the Closure class as well. To use this fact this MetaClass uses a MetaClass for Closure as static field And delegates calls to this MetaClass if needed. This allows a lean implementation for this MetaClass. Multiple generated closures will then use the same MetaClass for Closure. For static dispatching this class uses the MetaClass of Class, again all instances of this class will share that MetaClass. The Class MetaClass is initialized lazy, because most operations do not need this MetaClass.

The Closure and Class MetaClasses are not replaceable.

This MetaClass is for internal usage only!

Authors:
Jochen Theodorou
Since:
1.5
Inherited fields
Fields inherited from class Fields
class MetaClassImpl EMPTY_ARGUMENTS, INVOKE_METHOD_METHOD, METHOD_MISSING, PROPERTY_MISSING, STATIC_METHOD_MISSING, STATIC_PROPERTY_MISSING, getPropertyMethod, invokeMethodMethod, isGroovyObject, isMap, metaMethodIndex, registry, setPropertyMethod, theCachedClass, theClass

Methods Summary

Methods
Type Params Return Type Name and description
def ClosureMetaClass(MetaClassRegistry registry, Class theClass)
void addMetaBeanProperty(MetaBeanProperty mp)
void addMetaMethod(MetaMethod method)
void addNewInstanceMethod(Method method)
void addNewStaticMethod(Method method)
protected void applyPropertyDescriptors(PropertyDescriptor[] propertyDescriptors)
CallSite createPogoCallCurrentSite(CallSite site, Class sender, Object[] args)
CallSite createPogoCallSite(CallSite site, Object[] args)
CallSite createPojoCallSite(CallSite site, Object receiver, Object[] args)
Object getAttribute(Class sender, Object object, String attribute, boolean useSuper, boolean fromInsideClass)
List<MetaMethod> getMetaMethods()
MetaProperty getMetaProperty(String name)
MetaMethod getMethodWithoutCaching(int index, Class sender, String methodName, Class[] arguments, boolean isCallToSuper)
List<MetaMethod> getMethods()
List<MetaProperty> getProperties()
Object getProperty(Class sender, Object object, String name, boolean useSuper, boolean fromInsideClass)
MetaMethod getStaticMetaMethod(String name, Object[] args)
MetaMethod getStaticMetaMethod(String name, Class[] argTypes)
void initialize()
Object invokeMethod(Class sender, Object object, String methodName, Object[] originalArguments, boolean isCallToSuper, boolean fromInsideClass)
Object invokeStaticMethod(Object object, String methodName, Object[] arguments)
protected boolean isInitialized()
MetaMethod pickMethod(String name, Class[] argTypes)
static void resetCachedMetaClasses()
List respondsTo(Object obj, String name, Object[] argTypes)
List respondsTo(Object obj, String name)
Constructor retrieveConstructor(Class[] arguments)
MetaMethod retrieveStaticMethod(String methodName, Class[] arguments)
void setAttribute(Class sender, Object object, String attribute, Object newValue, boolean useSuper, boolean fromInsideClass)
void setProperties(Object bean, Map map)
void setProperty(Class sender, Object object, String name, Object newValue, boolean useSuper, boolean fromInsideClass)

Inherited Methods Summary

Inherited Methods
Methods inherited from class Name
class MetaClassImpl addMetaBeanProperty, addMetaMethod, addMetaMethodToIndex, addNewInstanceMethod, addNewStaticMethod, applyPropertyDescriptors, checkIfGroovyObjectMethod, checkInitalised, chooseMethod, clearInvocationCaches, createConstructorSite, createErrorMessageForAmbiguity, createPogoCallCurrentSite, createPogoCallSite, createPojoCallSite, createStaticSite, createTransformMetaMethod, doChooseMostSpecificParams, dropMethodCache, dropStaticMethodCache, findMethodInClassHierarchy, findMixinMethod, findOwnMethod, findPropertyInClassHierarchy, getAdditionalMetaMethods, getAttribute, getAttribute, getAttribute, getClassInfo, getClassNode, getEffectiveGetMetaProperty, getMetaMethod, getMetaMethods, getMetaProperty, getMethodWithCaching, getMethodWithoutCaching, getMethods, getProperties, getProperty, getProperty, getRegistry, getStaticMetaMethod, getSubclassMetaMethods, getSuperClasses, getTheCachedClass, getTheClass, getVersion, handleMatches, hasCustomInvokeMethod, hasCustomStaticInvokeMethod, hasProperty, incVersion, initialize, invokeConstructor, invokeMethod, invokeMethod, invokeMethod, invokeMissingMethod, invokeMissingProperty, invokeStaticMethod, invokeStaticMissingProperty, isGroovyObject, isInitialized, isModified, onGetPropertyFoundInHierarchy, onInvokeMethodFoundInHierarchy, onMixinMethodFound, onSetPropertyFoundInHierarchy, onSuperMethodFoundInHierarchy, onSuperPropertyFoundInHierarchy, pickMethod, respondsTo, respondsTo, retrieveConstructor, retrieveConstructor, retrieveStaticMethod, selectConstructorAndTransformArguments, setAttribute, setAttribute, setProperties, setProperty, setProperty, toString
class Object wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll

Method Detail

public def ClosureMetaClass(MetaClassRegistry registry, Class theClass)

public void addMetaBeanProperty(MetaBeanProperty mp)

public void addMetaMethod(MetaMethod method)

public void addNewInstanceMethod(Method method)

public void addNewStaticMethod(Method method)

protected void applyPropertyDescriptors(PropertyDescriptor[] propertyDescriptors)

public CallSite createPogoCallCurrentSite(CallSite site, Class sender, Object[] args)

public CallSite createPogoCallSite(CallSite site, Object[] args)

public CallSite createPojoCallSite(CallSite site, Object receiver, Object[] args)

@Override public Object getAttribute(Class sender, Object object, String attribute, boolean useSuper, boolean fromInsideClass)

@Override public List<MetaMethod> getMetaMethods()

public MetaProperty getMetaProperty(String name)

public MetaMethod getMethodWithoutCaching(int index, Class sender, String methodName, Class[] arguments, boolean isCallToSuper)

@Override public List<MetaMethod> getMethods()

@Override public List<MetaProperty> getProperties()

public Object getProperty(Class sender, Object object, String name, boolean useSuper, boolean fromInsideClass)

public MetaMethod getStaticMetaMethod(String name, Object[] args)

public MetaMethod getStaticMetaMethod(String name, Class[] argTypes)

public void initialize()

public Object invokeMethod(Class sender, Object object, String methodName, Object[] originalArguments, boolean isCallToSuper, boolean fromInsideClass)

public Object invokeStaticMethod(Object object, String methodName, Object[] arguments)

protected boolean isInitialized()

@Override public MetaMethod pickMethod(String name, Class[] argTypes)

public static void resetCachedMetaClasses()

public List respondsTo(Object obj, String name, Object[] argTypes)

public List respondsTo(Object obj, String name)

public Constructor retrieveConstructor(Class[] arguments)

public MetaMethod retrieveStaticMethod(String methodName, Class[] arguments)

@Override public void setAttribute(Class sender, Object object, String attribute, Object newValue, boolean useSuper, boolean fromInsideClass)

public void setProperties(Object bean, Map map)

public void setProperty(Class sender, Object object, String name, Object newValue, boolean useSuper, boolean fromInsideClass)

© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/2.4.21/html/gapi/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.html