Class ClassInfo
- java.lang.Object
-
- org.codehaus.groovy.reflection.ClassInfo
-
- All Implemented Interfaces:
Finalizable
public class ClassInfo extends java.lang.Object implements Finalizable
Handle for all information we want to keep about the classThis class handles caching internally and its advisable to not store references directly to objects of this class. The static factory method
getClassInfo(Class)should be used to retrieve an instance from the cache. Internally theClassassociated with aClassInfoinstance is kept asWeakReference, so it not safe to reference and instance without the Class being either strongly or softly reachable.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceClassInfo.ClassInfoAction
-
Field Summary
Fields Modifier and Type Field Description inthash
-
Method Summary
-
-
-
Field Detail
-
hash
public final int hash
- See Also:
- Constant Field Values
-
-
Method Detail
-
getVersion
public int getVersion()
-
incVersion
public void incVersion()
-
getModifiedExpando
public ExpandoMetaClass getModifiedExpando()
-
clearModifiedExpandos
public static void clearModifiedExpandos()
-
getTheClass
public final java.lang.Class<?> getTheClass()
Returns theClassassociated with thisClassInfo.This method can return
nullif theClassis no longer reachable through any strong or soft references. A non-null return value indicates that thisClassInfois valid.- Returns:
- the
Classassociated with thisClassInfo, elsenull
-
getCachedClass
public CachedClass getCachedClass()
-
getArtifactClassLoader
public ClassLoaderForClassArtifacts getArtifactClassLoader()
-
getClassInfo
public static ClassInfo getClassInfo(java.lang.Class cls)
-
remove
public static void remove(java.lang.Class<?> cls)
Removes aClassInfofrom the cache. This is useful in cases where the Class is parsed from a script, such as when using GroovyClassLoader#parseClass, and is executed for its result but the Class is not retained or cached. Removing theClassInfoassociated with the Class will make the Class and its ClassLoader eligible for garbage collection sooner that it would otherwise.- Parameters:
cls- the Class associated with the ClassInfo to remove from cache
-
getAllClassInfo
public static java.util.Collection<ClassInfo> getAllClassInfo()
-
onAllClassInfo
public static void onAllClassInfo(ClassInfo.ClassInfoAction action)
-
getStrongMetaClass
public MetaClass getStrongMetaClass()
-
setStrongMetaClass
public void setStrongMetaClass(MetaClass answer)
-
getWeakMetaClass
public MetaClass getWeakMetaClass()
-
setWeakMetaClass
public void setWeakMetaClass(MetaClass answer)
-
getMetaClassForClass
public MetaClass getMetaClassForClass()
-
getMetaClass
public final MetaClass getMetaClass()
Returns theMetaClassfor theClassassociated with thisClassInfo. If noMetaClassexists one will be created.It is not safe to call this method without a
Classassociated with thisClassInfo. It is advisable to aways retrieve a ClassInfo instance from the cache by using the static factory methodgetClassInfo(Class)to ensure the referenced Class is strongly reachable.- Returns:
- a
MetaClassinstance
-
getMetaClass
public MetaClass getMetaClass(java.lang.Object obj)
-
size
public static int size()
-
fullSize
public static int fullSize()
-
lock
public void lock()
-
unlock
public void unlock()
-
getPerInstanceMetaClass
public MetaClass getPerInstanceMetaClass(java.lang.Object obj)
-
setPerInstanceMetaClass
public void setPerInstanceMetaClass(java.lang.Object obj, MetaClass metaClass)
-
hasPerInstanceMetaClasses
public boolean hasPerInstanceMetaClasses()
-
finalizeReference
public void finalizeReference()
- Specified by:
finalizeReferencein interfaceFinalizable
-
-