ObjID (Java SE 15 & JDK 15)
Description: declaration: module: java.rmi, package: java.rmi.server, class: ObjID
Keywords: java.rmi.server.ObjID class

Module java.rmi
Package java.rmi.server

# Class ObjID

java.lang.Object
java.rmi.server.ObjID

All Implemented Interfaces:
  `Serializable`

    public final class ObjID
    extends Object
    implements Serializable

An `ObjID` is used to identify a remote object exported to an RMI runtime. When a remote object is exported, it is assigned an object identifier either implicitly or explicitly, depending on the API used to export.

The `ObjID()` constructor can be used to generate a unique object identifier. Such an `ObjID` is unique over time with respect to the host it is generated on. The `ObjID(int)` constructor can be used to create a "well-known" object identifier. The scope of a well-known `ObjID` depends on the RMI runtime it is exported to.

An `ObjID` instance contains an object number (of type `long`) and an address space identifier (of type `UID`). In a unique `ObjID`, the address space identifier is unique with respect to a given host over time. In a well-known `ObjID`, the address space identifier is equivalent to one returned by invoking the `UID(short)` constructor with the value zero.

If the system property `java.rmi.server.randomIDs` is defined to equal the string `"true"` (case insensitive), then the `ObjID()` constructor will use a cryptographically strong random number generator to choose the object number of the returned `ObjID`.

Since:
  1.1
See Also:
  Serialized Form

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `static int` | `ACTIVATOR_ID` | Object number for well-known `ObjID` of the activator.
  `static int` | `DGC_ID` | Object number for well-known `ObjID` of the distributed garbage collector.
  `static int` | `REGISTRY_ID` | Object number for well-known `ObjID` of the registry.

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `ObjID()` | Generates a unique object identifier.
  `ObjID​(int objNum)` | Creates a "well-known" object identifier.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `boolean` | `equals​(Object obj)` | Compares the specified object with this `ObjID` for equality.
  `int` | `hashCode()` | Returns the hash code value for this object identifier, the object number.
  `static ObjID` | `read​(ObjectInput in)` | Constructs and returns a new `ObjID` instance by unmarshalling a binary representation from an `ObjectInput` instance.
  `String` | `toString()` | Returns a string representation of this object identifier.
  `void` | `write​(ObjectOutput out)` | Marshals a binary representation of this `ObjID` to an `ObjectOutput` instance.

  ### Methods declared in class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### REGISTRY_ID

    public static final int REGISTRY_ID
    Object number for well-known `ObjID` of the registry.
    See Also:
      Constant Field Values

  - ### ACTIVATOR_ID

    public static final int ACTIVATOR_ID
    Object number for well-known `ObjID` of the activator.
    See Also:
      Constant Field Values

  - ### DGC_ID

    public static final int DGC_ID
    Object number for well-known `ObjID` of the distributed garbage collector.
    See Also:
      Constant Field Values

- ## Constructor Details

  - ### ObjID

    public ObjID()
    Generates a unique object identifier.

    If the system property `java.rmi.server.randomIDs` is defined to equal the string `"true"` (case insensitive), then this constructor will use a cryptographically strong random number generator to choose the object number of the returned `ObjID`.

  - ### ObjID

    public ObjID​(int objNum)
    Creates a "well-known" object identifier.

    An `ObjID` created via this constructor will not clash with any `ObjID`s generated via the no-arg constructor.

    Parameters:
      `objNum` - object number for well-known object identifier

- ## Method Details

  - ### write

    public void write​(ObjectOutput out) throws IOException
    Marshals a binary representation of this `ObjID` to an `ObjectOutput` instance.

    Specifically, this method first invokes the given stream's `DataOutput.writeLong(long)` method with this object identifier's object number, and then it writes its address space identifier by invoking its `UID.write(DataOutput)` method with the stream.

    Parameters:
      `out` - the `ObjectOutput` instance to write this `ObjID` to
    Throws:
      `IOException` - if an I/O error occurs while performing this operation

  - ### read

    public static ObjID read​(ObjectInput in) throws IOException
    Constructs and returns a new `ObjID` instance by unmarshalling a binary representation from an `ObjectInput` instance.

    Specifically, this method first invokes the given stream's `DataInput.readLong()` method to read an object number, then it invokes `UID.read(DataInput)` with the stream to read an address space identifier, and then it creates and returns a new `ObjID` instance that contains the object number and address space identifier that were read from the stream.

    Parameters:
      `in` - the `ObjectInput` instance to read `ObjID` from
    Returns:
      unmarshalled `ObjID` instance
    Throws:
      `IOException` - if an I/O error occurs while performing this operation

  - ### hashCode

    public int hashCode()
    Returns the hash code value for this object identifier, the object number.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      the hash code value for this object identifier
    See Also:
      `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`

  - ### equals

    public boolean equals​(Object obj)
    Compares the specified object with this `ObjID` for equality. This method returns `true` if and only if the specified object is an `ObjID` instance with the same object number and address space identifier as this one.
    Overrides:
      `equals` in class `Object`
    Parameters:
      `obj` - the object to compare this `ObjID` to
    Returns:
      `true` if the given object is equivalent to this one, and `false` otherwise
    See Also:
      `Object.hashCode()`, `HashMap`

  - ### toString

    public String toString()
    Returns a string representation of this object identifier.
    Overrides:
      `toString` in class `Object`
    Returns:
      a string representation of this object identifier