org.eclipse.jdt.debug.core

## Interface IJavaObject

All Superinterfaces:
  IAdaptable, IDebugElement, IJavaValue, IValue

All Known Subinterfaces:
  IJavaArray, IJavaClassObject

    public interface IJavaObject
    extends IJavaValue

A value referencing an object on a target VM.

Since:
  2.0
See Also:
  `IJavaValue`
Restriction:
  This interface is not intended to be implemented by clients.
Restriction:
  This interface is not intended to be extended by clients.

### Method Summary

All Methods Instance Methods Abstract Methods
`void` `disableCollection()` Prevents this object from being garbage collected.
`void` `enableCollection()` Permits this object to be garbage collected.
`IJavaFieldVariable` `getField(String name, boolean superField)` Returns a variable representing the field in this object with the given name, or `null` if there is no field with the given name, or the name is ambiguous.
`IJavaFieldVariable` `getField(String name, String typeSignature)` Returns a variable representing the field in this object with the given name declared in the type with the given signature, or `null` if there is no field with the given name, or the name is ambiguous.
`IJavaThread` `getOwningThread()` Returns the threads which owns for the monitor associated to this object, or `null` if no thread owns the monitor.
`IJavaObject[]` `getReferringObjects(long max)` Returns objects that directly reference this object.
`long` `getUniqueId()` Returns the unique id for this object.
`IJavaThread[]` `getWaitingThreads()` Returns the threads waiting for the monitor associated to this object, or `null` if no thread is waiting for the monitor.
`IJavaValue` `sendMessage(String selector, String signature, IJavaValue[] args, IJavaThread thread, boolean superSend)` Returns the result of sending the specified message to this object with the given arguments in the specified thread.
`IJavaValue` `sendMessage(String selector, String signature, IJavaValue[] args, IJavaThread thread, String typeSignature)` Returns the result of sending the specified message on the specified declaring type to this object with the given arguments in the specified thread.

### Methods inherited from interface org.eclipse.jdt.debug.core.IJavaValue

`getGenericSignature, getJavaType, getSignature, isNull`

### Methods inherited from interface org.eclipse.debug.core.model.IValue

`getReferenceTypeName, getValueString, getVariables, hasVariables, isAllocated`

### Methods inherited from interface org.eclipse.debug.core.model.IDebugElement

`getDebugTarget, getLaunch, getModelIdentifier`

### Methods inherited from interface org.eclipse.core.runtime.IAdaptable

`getAdapter`

### Method Detail

#### sendMessage

    IJavaValue sendMessage(String selector,
                           String signature,
                           IJavaValue[] args,
                           IJavaThread thread,
                           boolean superSend)
                    throws DebugException

Returns the result of sending the specified message to this object with the given arguments in the specified thread. The given thread is resumed to perform the method invocation. The thread will suspend in its original location when the method invocation is complete. This method does not return until the method invocation is complete. Invoking a method in the target VM can result in breakpoints being hit, infinite loops, and deadlock.

Parameters:
  `selector` - the selector of the method to be invoked
  `signature` - the JNI style signature of the method to be invoked
  `args` - the arguments of the method, which can be `null` or empty if there are none
  `thread` - the thread in which to invoke the method
  `superSend` - `true` if the method lookup should begin in this object's superclass
Returns:
  the result of invoking the method
Throws:
  `DebugException` - if this method fails. Reasons include:
  - Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
  - This object does not implement the specified method
  - An exception occurs while invoking the specified method
  - The given thread is already performing a message send, (status code `IJavaThread.ERR_NESTED_METHOD_INVOCATION`)
  - The given thread is not currently suspended (status code `IJavaThread.ERR_THREAD_NOT_SUSPENDED`)
  - The given thread was explicitly suspended (status code `IJavaThread.ERR_INCOMPATIBLE_THREAD_STATE`)

#### sendMessage

    IJavaValue sendMessage(String selector,
                           String signature,
                           IJavaValue[] args,
                           IJavaThread thread,
                           String typeSignature)
                    throws DebugException

Returns the result of sending the specified message on the specified declaring type to this object with the given arguments in the specified thread. The given thread is resumed to perform the method invocation. The thread will suspend in its original location when the method invocation is complete. This method does not return until the method invocation is complete. Invoking a method in the target VM can result in breakpoints being hit, infinite loops, and deadlock.

Parameters:
  `selector` - the selector of the method to be invoked
  `signature` - the JNI style signature of the method to be invoked
  `args` - the arguments of the method, which can be `null` or empty if there are none
  `thread` - the thread in which to invoke the method
  `typeSignature` - the signature of the type in which the method is defined or `null` if the method should be invoked normally using polymorphism
Returns:
  the result of invoking the method
Throws:
  `DebugException` - if this method fails. Reasons include:
  - Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
  - This object does not implement the specified method
  - An exception occurs while invoking the specified method
  - The given thread is already performing a message send, (status code `IJavaThread.ERR_NESTED_METHOD_INVOCATION`)
  - The given thread is not currently suspended (status code `IJavaThread.ERR_THREAD_NOT_SUSPENDED`)
  - The given thread was explicitly suspended (status code `IJavaThread.ERR_INCOMPATIBLE_THREAD_STATE`)
Since:
  2.0.1

#### getField

    IJavaFieldVariable getField(String name,
                                boolean superField)
                         throws DebugException

Returns a variable representing the field in this object with the given name, or `null` if there is no field with the given name, or the name is ambiguous.

Parameters:
  `name` - field name
  `superField` - whether or not to get the field in the superclass of this objects.
Returns:
  the variable representing the field, or `null`
Throws:
  `DebugException` - if this method fails. Reasons include:
  - Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.

#### getField

    IJavaFieldVariable getField(String name,
                                String typeSignature)
                         throws DebugException

Returns a variable representing the field in this object with the given name declared in the type with the given signature, or `null` if there is no field with the given name, or the name is ambiguous.

Parameters:
  `name` - field name
  `typeSignature` - the signature of the type in which the field is defined
Returns:
  the variable representing the field, or `null`
Throws:
  `DebugException` - if this method fails. Reasons include:
  - Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.

#### getWaitingThreads

    IJavaThread[] getWaitingThreads()
                             throws DebugException

Returns the threads waiting for the monitor associated to this object, or `null` if no thread is waiting for the monitor.

Returns:
  the thread waiting for the monitor, or `null`.
Throws:
  `DebugException` - if this method fails. Reasons include:
  - The VM is not able to retrieve the monitor information
  - Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
Since:
  3.1

#### getOwningThread

    IJavaThread getOwningThread()
                         throws DebugException

Returns the threads which owns for the monitor associated to this object, or `null` if no thread owns the monitor.

Returns:
  the thread which owns the monitor, or `null`.
Throws:
  `DebugException` - if this method fails. Reasons include:
  - The VM is not able to retrieve the monitor information
  - Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
Since:
  3.1

#### getReferringObjects

    IJavaObject[] getReferringObjects(long max)
                               throws DebugException

Returns objects that directly reference this object.

Parameters:
  `max` - the maximum number of references to retrieve or 0 for all references
Returns:
  objects that directly reference this object
Throws:
  `DebugException` - if the request fails
Since:
  3.3

#### enableCollection

    void enableCollection()
                   throws DebugException

Permits this object to be garbage collected. Has no effect if this VM does not support enabling/disabling of garbage collection of specific objects.

Throws:
  `DebugException` - if request fails
Since:
  3.4
See Also:
  `IJavaDebugTarget`

#### disableCollection

    void disableCollection()
                    throws DebugException

Prevents this object from being garbage collected. Has no effect if this VM does not support enabling/disabling of garbage collection of specific objects.

Throws:
  `DebugException` - if request fails
Since:
  3.4
See Also:
  `IJavaDebugTarget`

#### getUniqueId

    long getUniqueId()
              throws DebugException

Returns the unique id for this object.

Returns:
  unique id or -1 if this value is `null`
Throws:
  `DebugException` - if the request fails
Since:
  3.4