-
- All Known Implementing Classes:
DTFJJavaClass
,JavaAbstractClass
,JavaArrayClass
,JavaClass
,JCJavaClass
public interface JavaClass
Represents a Java class.
-
-
Field Summary
Fields Modifier and Type Field Description static int
MODIFIERS_UNAVAILABLE
MODIFIERS_UNAVAILABLE is returned by getModifiers() when the modifiers are unavailable.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description boolean
equals(Object obj)
Compares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.JavaClassLoader
getClassLoader()
Fetch the class loader associated with this class.JavaClass
getComponentType()
For array classes, returns a JavaClass representing the component type of this array class.Iterator
getConstantPoolReferences()
Java classes may refer to other classes and to String objects via the class's constant pool.Iterator
getDeclaredFields()
Get the set of fields declared in this class.Iterator
getDeclaredMethods()
Get the set of methods declared in this class.ImagePointer
getID()
The ID of a class is a pointer to a section of memory which identifies the class.long
getInstanceSize()
Returns the size in bytes of an instance of this class on the heap.Iterator
getInterfaces()
Get the set of names of interfaces directly implemented by this class.int
getModifiers()
Return the Java language modifiers for this class.String
getName()
Get the name of the class.JavaObject
getObject()
Fetch the java.lang.Class object associated with this class.JavaObject
getProtectionDomain()
Returns the protection domain for this class.Iterator
getReferences()
Get the set of references from this class.JavaClass
getSuperclass()
Get the immediate superclass of this class.int
hashCode()
Answers an integer hash code for the receiver.boolean
isArray()
Is this an array class ?
-
-
-
Field Detail
-
MODIFIERS_UNAVAILABLE
static final int MODIFIERS_UNAVAILABLE
MODIFIERS_UNAVAILABLE is returned by getModifiers() when the modifiers are unavailable. The value 0xff000000 is chosen as it is a value that can never return true to any of the java.reflect.Modifier methods that test the modifier: isNative(), isPublic(), etc. while at the same time not being 0 which is a possible value when no modifier at all is present i.e. "default". All other values for the modifier returned are defined in java.lang.reflect.Modifiers- See Also:
Modifier
, Constant Field Values
-
-
Method Detail
-
getObject
JavaObject getObject() throws CorruptDataException
Fetch the java.lang.Class object associated with this class.In some implementations this may be null if no object has been created to represent this class, or if the class is synthetic.
- Returns:
- the java.lang.Class object associated with this class
- Throws:
CorruptDataException
- See Also:
getID()
-
getClassLoader
JavaClassLoader getClassLoader() throws CorruptDataException
Fetch the class loader associated with this class. Classes defined in the bootstrap class loader (including classes representing primitive types or void) will always return a JavaClassLoader representing the bootstrap class loader. This asymmetry with java.lang.Class#getClassLoader() is intentional.- Returns:
- the JavaClassLoader in which this class was defined
- Throws:
CorruptDataException
- if the class loader for this class cannot be found (a class cannot exist without a loader so this implies corruption)
-
getName
String getName() throws CorruptDataException
Get the name of the class.- Returns:
- the name of the class in the form: "full/package/class$innerclass"
- Throws:
CorruptDataException
-
getSuperclass
JavaClass getSuperclass() throws CorruptDataException
Get the immediate superclass of this class.- Returns:
- the immediate superclass of this class, or null if this class has no superclass. For interfaces, Object, primitive types and void null is always returned.
- Throws:
CorruptDataException
-
getInterfaces
Iterator getInterfaces()
Get the set of names of interfaces directly implemented by this class.- Returns:
- an iterator over the collection of the names of interfaces directly implemented by this class. Some JVM implementations may choose to load interfaces lazily, so only the names are returned. The JavaClass objects may be found through the defining class loader.
- See Also:
String
,JavaClassLoader.findClass(String)
,CorruptData
-
getModifiers
int getModifiers() throws CorruptDataException
Return the Java language modifiers for this class.The modifiers are defined by the JVM Specification.
Return MODIFIERS_UNAVAILABLE if the modifiers are unavailable. This might be the case if DTFJ is operating against an artefact such as a portable heap dump that does not contain information about a class's modifiers.
Note that, for inner classes, the actual modifiers are returned, not the synthetic modifiers. For instance, a class will never have its 'protected' modifier set, even if the inner class was a protected member, since 'protected' is not a legal modifier for a class file.
- Returns:
- the modifiers for this class
- Throws:
CorruptDataException
-
isArray
boolean isArray() throws CorruptDataException
Is this an array class ?- Returns:
- true if this class is an array class
- Throws:
CorruptDataException
-
getComponentType
JavaClass getComponentType() throws CorruptDataException
For array classes, returns a JavaClass representing the component type of this array class.- Returns:
- a JavaClass representing the component type of this array class
- Throws:
CorruptDataException
IllegalArgumentException
- if this JavaClass does not represent an array class
-
getDeclaredFields
Iterator getDeclaredFields()
Get the set of fields declared in this class.- Returns:
- an iterator over the collection of fields declared in this class.
- See Also:
JavaField
,CorruptData
-
getDeclaredMethods
Iterator getDeclaredMethods()
Get the set of methods declared in this class.- Returns:
- an iterator over the collection of methods declared in this class.
- See Also:
JavaMethod
,CorruptData
-
getConstantPoolReferences
Iterator getConstantPoolReferences()
Java classes may refer to other classes and to String objects via the class's constant pool. These references are followed by the garbage collector, forming edges on the graph of reachable objects. This getConstantPoolReferences() may be used to determine which objects are referred to by the receiver's constant pool.Although Java VMs typically permit only Class and String objects in the constant pool, some esoteric or future virtual machines may permit other types of objects to occur in the constant pool. This API imposes no restrictions on the types of JavaObjects which might be included in the Iterator.
No assumption should be made about the order in which constant pool references are returned.
Classes may also refer to objects through static variables. These may be found with the getDeclaredFields() API. Objects referenced by static variables are not returned by getConstantPoolReferences() unless the object is also referenced by the constant pool.
- Returns:
- an iterator over the collection of JavaObjects which are referred to by the constant pool of this class
- See Also:
JavaObject
,CorruptData
-
getID
ImagePointer getID()
The ID of a class is a pointer to a section of memory which identifies the class. The contents of this memory are implementation defined.In some implementations getID() and getObject().getID() may return the same value. This implies that the class object is also the primary internal representation of the class. DTFJ users should not rely on this behaviour.
In some implementations, getID() may return null for some classes. This indicates that the class is a synthetic class which has been constructed for DTFJ purposes only. The class has no physical representation in the VM.
- Returns:
- a pointer to the class
-
getReferences
Iterator getReferences()
Get the set of references from this class.- Returns:
- an iterator of JavaReferences
- See Also:
JavaReference
,CorruptData
-
equals
boolean equals(Object obj)
Description copied from class:java.lang.Object
Compares the argument to the receiver, and answers true if they represent the same object using a class specific comparison. The implementation in Object answers true only if the argument is the exact same object as the receiver (==).- Overrides:
equals
in classObject
- Parameters:
obj
-- Returns:
- True if the given object refers to the same Java Class in the image
- See Also:
Object.hashCode()
-
getInstanceSize
long getInstanceSize() throws DataUnavailable, CorruptDataException
Returns the size in bytes of an instance of this class on the heap.The call is only meaningful for a non-array JavaClass, where all instances of the class are of the same size. If this method is called on a JavaArrayClass, where instances can be of different sizes, an UnsupportedOperationException will be thrown. DataUnavailable can be thrown if no value is available: for example when DTFJ is examining a javacore, where the instance size for a class is not recorded.
- Returns:
- size in bytes of an instance
- Throws:
DataUnavailable
CorruptDataException
UnsupportedOperationException
- if the JavaClass is an instance of JavaArrayClass- Since:
- 1.6
-
hashCode
int hashCode()
Description copied from class:java.lang.Object
Answers an integer hash code for the receiver. Any two objects which answertrue
when passed to.equals
must answer the same value for this method.- Overrides:
hashCode
in classObject
- Returns:
- the receiver's hash.
- See Also:
Object.equals(java.lang.Object)
-
getProtectionDomain
JavaObject getProtectionDomain() throws DataUnavailable, CorruptDataException
Returns the protection domain for this class.- Returns:
- the protection domain or null for the default protection domain
- Throws:
DataUnavailable
CorruptDataException
- Since:
- 9
-
-