Package org.eclipse.mat.parser.model

## Class AbstractObjectImpl

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

All Implemented Interfaces:
  `Serializable`, `IObject`

Direct Known Subclasses:
  `AbstractArrayImpl`, `ClassImpl`, `InstanceImpl`

    public abstract class AbstractObjectImpl
    extends Object
    implements IObject, Serializable

The general implementation of any Java object (plain object, array, class, classloader).

See Also:
  Serialized Form
No Extend:

### Nested Class Summary

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

`IObject.Type`

### Constructor Summary

Constructors
`AbstractObjectImpl​(int objectId, long address, ClassImpl classInstance)` Construct a general object, called from subclass.

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
`boolean` `equals​(Object obj)`
`long` `getClassAddress()` Returns the address of the class which is the type of this object.
`int` `getClassId()` Returns the id of the class which is the type of this object.
`String` `getClassSpecificName()` Get class specific name of this object which depends on the availability of the appropriate name resolver, e.g.
`ClassImpl` `getClazz()` Get class snapshot object this object is an instance of.
`static Comparator<AbstractObjectImpl>` `getComparatorForClassSpecificName()` Deprecated.
`static Comparator<AbstractObjectImpl>` `getComparatorForTechnicalName()` Deprecated.
`static Comparator<AbstractObjectImpl>` `getComparatorForUsedHeapSize()` Deprecated.
`String` `getDisplayName()` Get concatenation of `IObject.getTechnicalName()` and `IObject.getClassSpecificName()`.
`GCRootInfo[]` `getGCRootInfo()` Get `GCRootInfo` if the object is a garbage collection root or null otherwise.
`long` `getObjectAddress()` Get address for the snapshot object.
`int` `getObjectId()` Get id for the snapshot object.
`abstract ArrayLong` `getReferences()` Gets the outbound references from this object, as addresses.
`long` `getRetainedHeapSize()` Get retained heap size of this object.
`ISnapshot` `getSnapshot()` Returns the snapshot from which this object has been read.
`String` `getTechnicalName()` Get technical name of this object which is something like class@address.
`abstract long` `getUsedHeapSize()` Get used heap size of just this object.
`int` `hashCode()`
`Object` `resolveValue​(String name)` Resolves and returns the value of a field specified by a dot notation.
`void` `setClassInstance​(ClassImpl classInstance)` Changes the type of the object.
`void` `setObjectAddress​(long address)` Used to set the address, for example after reconstructing an object from a file.
`void` `setObjectId​(int objectId)` Set the index for the object
`void` `setSnapshot​(ISnapshot dump)` Set the snapshot for an object.
`String` `toString()`

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

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

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

`getOutboundReferences`

### Constructor Detail

#### AbstractObjectImpl

    public AbstractObjectImpl​(int objectId,
                              long address,
                              ClassImpl classInstance)

Construct a general object, called from subclass.

Parameters:
  `objectId` - the index of the object
  `address` - the actual address
  `classInstance` - the type of the object

### Method Detail

#### getObjectAddress

    public long getObjectAddress()

Description copied from interface: `IObject`
Get address for the snapshot object. This is the address at which the object was stored in memory. Use the address only for visualization purposes and try to use the id wherever possible as the snapshot API is optimized to handle ids and not addresses. Addresses are bigger ( `long`), have no consecutive order (with gaps), and are not used for hashing.

Specified by:
  `getObjectAddress` in interface `IObject`
Returns:
  address for the snapshot object

#### getObjectId

    public int getObjectId()

Description copied from interface: `IObject`
Get id for the snapshot object. The id is not the address, but an internally assigned number fitting into an `int` (this helps reducing the memory footprint of the snapshot considerably - addresses are only used for visualization purposes).

Specified by:
  `getObjectId` in interface `IObject`
Returns:
  id for the snapshot object

#### setObjectAddress

    public void setObjectAddress​(long address)

Used to set the address, for example after reconstructing an object from a file.

Parameters:
  `address` -

#### setObjectId

    public void setObjectId​(int objectId)

Set the index for the object

Parameters:
  `objectId` - the index into all the indexes for other object data

#### getClazz

    public ClassImpl getClazz()

Description copied from interface: `IObject`
Get class snapshot object this object is an instance of.

Specified by:
  `getClazz` in interface `IObject`
Returns:
  class snapshot object this object is an instance of

#### getClassAddress

    public long getClassAddress()

Returns the address of the class which is the type of this object.

Returns:
  the address

#### getClassId

    public int getClassId()

Returns the id of the class which is the type of this object.

Returns:
  the id

#### setClassInstance

    public void setClassInstance​(ClassImpl classInstance)

Changes the type of the object. Used when constructing a ClassImpl for java.lang.Class.

Parameters:
  `classInstance` -

#### setSnapshot

    public void setSnapshot​(ISnapshot dump)

Set the snapshot for an object. Used once the entire snapshot has been built, or an object has been deserialized.

Parameters:
  `dump` - the actual current snapshot

#### getSnapshot

    public ISnapshot getSnapshot()

Description copied from interface: `IObject`
Returns the snapshot from which this object has been read.

Specified by:
  `getSnapshot` in interface `IObject`
Returns:
  the snapshot from which this object has been read.

#### getUsedHeapSize

    public abstract long getUsedHeapSize()

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

Specified by:
  `getUsedHeapSize` in interface `IObject`
Returns:
  used heap size of this object
Since:
  1.0

#### getRetainedHeapSize

    public long getRetainedHeapSize()

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

Specified by:
  `getRetainedHeapSize` in interface `IObject`
Returns:
  retained heap size of this object (returns 0 if the dominator tree wasn't calculated for the corresponding snapshot)

#### getReferences

    public abstract ArrayLong getReferences()

Gets the outbound references from this object, as addresses.

Returns:
  a list of outbound references

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### getClassSpecificName

    public String getClassSpecificName()

Description copied from interface: `IObject`
Get class specific name of this object which depends on the availability of the appropriate name resolver, e.g. for a String the value of the char[].

Specified by:
  `getClassSpecificName` in interface `IObject`
Returns:
  class specific name of the given snapshot object or null if it can't be resolved

#### 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`
Returns:
  technical name of this object which is something like class@address

#### getDisplayName

    public String getDisplayName()

Description copied from interface: `IObject`
Get concatenation of `IObject.getTechnicalName()` and `IObject.getClassSpecificName()`.

Specified by:
  `getDisplayName` in interface `IObject`
Returns:
  concatenation of `IObject.getTechnicalName()` and `IObject.getClassSpecificName()`

#### resolveValue

    public final Object resolveValue​(String name)
                              throws SnapshotException

Description copied from interface: `IObject`
Resolves and returns the value of a field specified by a dot notation. If the field is a primitive type, the value the returns the corresponding object wrapper, e.g. a java.lang.Boolean is returned for a field of type boolean. If the field is an object reference, the corresponding IObject is returned.

The field can be specified using the dot notation, i.e. object references are followed and its fields are evaluated. If any of the object references is null, null is returned.

Specified by:
  `resolveValue` in interface `IObject`
Parameters:
  `name` - the field name in dot notation
Returns:
  the value of the field
Throws:
  `SnapshotException`

#### getGCRootInfo

    public GCRootInfo[] getGCRootInfo()
                               throws SnapshotException

Description copied from interface: `IObject`
Get `GCRootInfo` if the object is a garbage collection root or null otherwise. An object may or may not be a garbage collection root, it may even be one for multiple reasons (described in the `GCRootInfo` object).

Specified by:
  `getGCRootInfo` in interface `IObject`
Returns:
  `GCRootInfo` if the object is a garbage collection root or null otherwise
Throws:
  `SnapshotException`

#### equals

    public boolean equals​(Object obj)

Overrides:
  `equals` in class `Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### getComparatorForTechnicalName

    @Deprecated
    public static Comparator<AbstractObjectImpl> getComparatorForTechnicalName()

Deprecated.
Gets a comparator for sorting objects by technical name - type plus address. Appears to be unused, and currently only returns null, so do not use.

Returns:
  null

#### getComparatorForClassSpecificName

    @Deprecated
    public static Comparator<AbstractObjectImpl> getComparatorForClassSpecificName()

Deprecated.
Gets a comparator for sorting objects by resolved name description. Appears to be unused, and currently only returns null, so do not use.

Returns:
  null

#### getComparatorForUsedHeapSize

    @Deprecated
    public static Comparator<AbstractObjectImpl> getComparatorForUsedHeapSize()

Deprecated.
Gets a comparator for sorting objects by used heap size. Appears to be unused, and currently only returns null, so do not use.

Returns:
  null