org.eclipse.mat.parser.model

## Class ClassImpl

- java.lang.Object
- - org.eclipse.mat.parser.model.AbstractObjectImpl
  - - org.eclipse.mat.parser.model.ClassImpl

All Implemented Interfaces:
  Serializable, Comparable<ClassImpl>, IClass, IObject

    public class ClassImpl
    extends AbstractObjectImpl
    implements IClass, Comparable<ClassImpl>

Implementation of a Java object representing a java.lang.Class object. As well as some standard object information it contains information about the class and summary details about instances of this class.

See Also:
  Serialized Form
No Extend:

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.eclipse.mat.snapshot.model.IObject

`IObject.Type`

### Field Summary

Fields
`static String` `JAVA_LANG_CLASS`

### Fields inherited from interface org.eclipse.mat.snapshot.model.IClass

`JAVA_LANG_CLASSLOADER`

### Constructor Summary

Constructors
Constructor and Description
`ClassImpl(long address, String name, long superAddress, long loaderAddress, Field[] staticFields, FieldDescriptor[] fields)` Construct a class object based on name, address and fields.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addInstance(long usedHeapSize)`
`void` `addSubClass(ClassImpl clazz)`
`int` `compareTo(ClassImpl other)`
`boolean` `doesExtend(String className)` Does this class extend a class of the supplied name? With multiple class loaders the supplied name might not be the class you were intending to find.
`List<IClass>` `getAllSubclasses()` Returns all sub-classes including sub-classes of its sub-classes.
`Serializable` `getCacheEntry()` Gets the key for extra information about this class.
`long` `getClassLoaderAddress()` Returns the address of the class loader which loaded this class.
`int` `getClassLoaderId()` Returns the id of the class loader which loaded this class.
`List<FieldDescriptor>` `getFieldDescriptors()` Returns field descriptors for all member variables of instances of this class.
`long` `getHeapSizePerInstance()` Returns the heap size of one instance of this class.
`String` `getName()` Returns the fully qualified class name of this class.
`int` `getNumberOfObjects()` Returns the number of instances of this class present in the heap dump.
`int[]` `getObjectIds()` Ids of all instances of this class (an empty array if there are no instances of the class)
`List<NamedReference>` `getOutboundReferences()` Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.
`ArrayLong` `getReferences()` Gets the outbound references from this object, as addresses.
`long` `getRetainedHeapSizeOfObjects(boolean calculateIfNotAvailable, boolean approximation, IProgressListener listener)` Returns the retained size of all objects of this instance including the class instance.
`List<Field>` `getStaticFields()` Returns the static fields and it values.
`List<IClass>` `getSubclasses()` Returns the direct sub-classes.
`ClassImpl` `getSuperClass()` Returns the super class.
`long` `getSuperClassAddress()`
`int` `getSuperClassId()` Returns the id of the super class.
`String` `getTechnicalName()` Get technical name of this object which is something like class@address.
`long` `getTotalSize()`
`long` `getUsedHeapSize()` Get used heap size of just this object.
`boolean` `hasSuperClass()` Returns true if the class has a super class.
`boolean` `isArrayType()` Returns true if the class is an array class.
`void` `removeInstance(long heapSizePerInstance)`
`void` `removeSubClass(ClassImpl clazz)`
`void` `setCacheEntry(Serializable cacheEntry)` Sets the key for extra information about this class.
`void` `setClassLoaderAddress(long address)`
`void` `setClassLoaderIndex(int classLoaderIndex)` Sets the class loader index.
`void` `setHeapSizePerInstance(long size)`
`void` `setName(String name)`
`void` `setSnapshot(ISnapshot dump)` Set the snapshot for an object.
`void` `setSuperClassIndex(int superClassIndex)` Sets the superclass index.
`void` `setUsedHeapSize(long usedHeapSize)`

### Methods inherited from class org.eclipse.mat.parser.model.AbstractObjectImpl

`equals, getClassAddress, getClassId, getClassSpecificName, getClazz, getComparatorForClassSpecificName, getComparatorForTechnicalName, getComparatorForUsedHeapSize, getDisplayName, getGCRootInfo, getObjectAddress, getObjectId, getRetainedHeapSize, getSnapshot, hashCode, resolveValue, setClassInstance, setObjectAddress, setObjectId, toString`

### Methods inherited from class java.lang.Object

`getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.eclipse.mat.snapshot.model.IObject

`getClassSpecificName, getClazz, getDisplayName, getGCRootInfo, getObjectAddress, getObjectId, getRetainedHeapSize, getSnapshot, resolveValue`

### Field Detail

#### JAVA_LANG_CLASS

    public static final String JAVA_LANG_CLASS

See Also:
  Constant Field Values

### Constructor Detail

#### ClassImpl

    public ClassImpl(long address,
                     String name,
                     long superAddress,
                     long loaderAddress,
                     Field[] staticFields,
                     FieldDescriptor[] fields)

Construct a class object based on name, address and fields.

Parameters:
  `address` - the address of the class object
  `name` - the class name, using '.' as package separator
  `superAddress` - the address of the superclass, or 0 if none.
  `loaderAddress` - the address of the class loader
  `staticFields` - all the static fields, with values
  `fields` - all the instance fields as descriptors

### Method Detail

#### getCacheEntry

    public Serializable getCacheEntry()

Gets the key for extra information about this class.

Returns:
  the key

#### setCacheEntry

    public void setCacheEntry(Serializable cacheEntry)

Sets the key for extra information about this class.

Parameters:
  `cacheEntry` - the key

#### setSuperClassIndex

    public void setSuperClassIndex(int superClassIndex)

Sets the superclass index. May need to be changed after reindexing of a snapshot.

Parameters:
  `superClassIndex` - the new index

#### setClassLoaderIndex

    public void setClassLoaderIndex(int classLoaderIndex)

Sets the class loader index. May need to be changed after reindexing of a snapshot.

Parameters:
  `classLoaderIndex` - the new index

#### getObjectIds

    public int[] getObjectIds()
                       throws UnsupportedOperationException,
                              SnapshotException

Description copied from interface: `IClass`
Ids of all instances of this class (an empty array if there are no instances of the class)

Specified by:
  `getObjectIds` in interface `IClass`
Throws:
  `UnsupportedOperationException`
  `SnapshotException`

#### getRetainedHeapSizeOfObjects

    public long getRetainedHeapSizeOfObjects(boolean calculateIfNotAvailable,
                                             boolean approximation,
                                             IProgressListener listener)
                                      throws SnapshotException

Description copied from interface: `IClass`
Returns the retained size of all objects of this instance including the class instance.

Specified by:
  `getRetainedHeapSizeOfObjects` in interface `IClass`
Throws:
  `SnapshotException`

#### getUsedHeapSize

    public long getUsedHeapSize()

Description copied from interface: `IObject`
Get used heap size of just this object.

Specified by:
  `getUsedHeapSize` in interface `IObject`
Specified by:
  `getUsedHeapSize` in class `AbstractObjectImpl`
Returns:
  used heap size of this object

#### getReferences

    public ArrayLong getReferences()

Description copied from class: `AbstractObjectImpl`
Gets the outbound references from this object, as addresses.

Specified by:
  `getReferences` in class `AbstractObjectImpl`
Returns:
  a list of outbound references

#### getOutboundReferences

    public List<NamedReference> getOutboundReferences()

Description copied from interface: `IObject`
Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.

Specified by:
  `getOutboundReferences` in interface `IObject`
Returns:
  list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced

#### getClassLoaderAddress

    public long getClassLoaderAddress()

Description copied from interface: `IClass`
Returns the address of the class loader which loaded this class.

Specified by:
  `getClassLoaderAddress` in interface `IClass`

#### setClassLoaderAddress

    public void setClassLoaderAddress(long address)

#### getFieldDescriptors

    public List<FieldDescriptor> getFieldDescriptors()

Description copied from interface: `IClass`
Returns field descriptors for all member variables of instances of this class. If the snapshot data format does not contain field data then this will be an empty list.

Specified by:
  `getFieldDescriptors` in interface `IClass`

#### getNumberOfObjects

    public int getNumberOfObjects()

Description copied from interface: `IClass`
Returns the number of instances of this class present in the heap dump.

Specified by:
  `getNumberOfObjects` in interface `IClass`

#### getHeapSizePerInstance

    public long getHeapSizePerInstance()

Description copied from interface: `IClass`
Returns the heap size of one instance of this class. Not valid if this class represents an array.

Specified by:
  `getHeapSizePerInstance` in interface `IClass`
Since:
  1.0

#### setHeapSizePerInstance

    public void setHeapSizePerInstance(long size)

Since:
  1.0

#### getName

    public String getName()

Description copied from interface: `IClass`
Returns the fully qualified class name of this class. The package components are separated by dots '.'. Inner classes use $ to separate the parts.

Specified by:
  `getName` in interface `IClass`

#### setName

    public void setName(String name)

#### getStaticFields

    public List<Field> getStaticFields()

Description copied from interface: `IClass`
Returns the static fields and it values. If the snapshot data format does not contain field data then this will be an empty list.

Specified by:
  `getStaticFields` in interface `IClass`

#### getSuperClassAddress

    public long getSuperClassAddress()

#### getSuperClassId

    public int getSuperClassId()

Description copied from interface: `IClass`
Returns the id of the super class. -1 if it has no super class, i.e. if it is java.lang.Object.

Specified by:
  `getSuperClassId` in interface `IClass`

#### getSuperClass

    public ClassImpl getSuperClass()

Description copied from interface: `IClass`
Returns the super class.

Specified by:
  `getSuperClass` in interface `IClass`

#### getTotalSize

    public long getTotalSize()

#### hasSuperClass

    public boolean hasSuperClass()

Description copied from interface: `IClass`
Returns true if the class has a super class.

Specified by:
  `hasSuperClass` in interface `IClass`

#### compareTo

    public int compareTo(ClassImpl other)

Specified by:
  `compareTo` in interface `Comparable<ClassImpl>`

#### addInstance

    public void addInstance(long usedHeapSize)

Since:
  1.0

#### removeInstance

    public void removeInstance(long heapSizePerInstance)

Since:
  1.0

#### getSubclasses

    public List<IClass> getSubclasses()

Description copied from interface: `IClass`
Returns the direct sub-classes.

Specified by:
  `getSubclasses` in interface `IClass`

#### getAllSubclasses

    public List<IClass> getAllSubclasses()

Description copied from interface: `IClass`
Returns all sub-classes including sub-classes of its sub-classes.

Specified by:
  `getAllSubclasses` in interface `IClass`

#### isArrayType

    public boolean isArrayType()

Description copied from interface: `IClass`
Returns true if the class is an array class.

Specified by:
  `isArrayType` in interface `IClass`

#### getTechnicalName

    public String getTechnicalName()

Description copied from interface: `IObject`
Get technical name of this object which is something like class@address.

Specified by:
  `getTechnicalName` in interface `IObject`
Overrides:
  `getTechnicalName` in class `AbstractObjectImpl`
Returns:
  technical name of this object which is something like class@address

#### getClassLoaderId

    public int getClassLoaderId()

Description copied from interface: `IClass`
Returns the id of the class loader which loaded this class.

Specified by:
  `getClassLoaderId` in interface `IClass`

#### addSubClass

    public void addSubClass(ClassImpl clazz)

#### removeSubClass

    public void removeSubClass(ClassImpl clazz)

#### setUsedHeapSize

    public void setUsedHeapSize(long usedHeapSize)

Since:
  1.0

#### doesExtend

    public boolean doesExtend(String className)
                       throws SnapshotException

Description copied from interface: `IClass`
Does this class extend a class of the supplied name? With multiple class loaders the supplied name might not be the class you were intending to find.

Specified by:
  `doesExtend` in interface `IClass`
Returns:
  true if it does extend
Throws:
  `SnapshotException`

#### setSnapshot

    public void setSnapshot(ISnapshot dump)

Description copied from class: `AbstractObjectImpl`
Set the snapshot for an object. Used once the entire snapshot has been built, or an object has been deserialized.

Overrides:
  `setSnapshot` in class `AbstractObjectImpl`
Parameters:
  `dump` - the actual current snapshot