Package com.ericsson.otp.erlang

## Class OtpErlangRef

- java.lang.Object
- - com.ericsson.otp.erlang.OtpErlangObject
  - - com.ericsson.otp.erlang.OtpErlangRef

- All Implemented Interfaces:
    `java.io.Serializable`, `java.lang.Cloneable`

      public class OtpErlangRef
      extends OtpErlangObject

  Provides a Java representation of Erlang refs. There are two styles of Erlang refs, old style (one id value) and new style (array of id values). This class manages both types.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class com.ericsson.otp.erlang.OtpErlangObject

      `OtpErlangObject.Hash`

  - ### Field Summary

    - ### Fields inherited from class com.ericsson.otp.erlang.OtpErlangObject

      `hashCodeValue`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `OtpErlangRef​(int tag, java.lang.String node, int[] ids, int creation)` | Create a new(er) style Erlang ref from its components.
    `OtpErlangRef​(OtpInputStream buf)` | Create an Erlang ref from a stream containing a ref encoded in Erlang external format.
    `OtpErlangRef​(OtpLocalNode self)` | Deprecated. use OtpLocalNode:createRef() instead
    `OtpErlangRef​(java.lang.String node, int[] ids, int creation)` | Create a new style Erlang ref from its components.
    `OtpErlangRef​(java.lang.String node, int id, int creation)` | Create an old style Erlang ref from its components.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.Object` | `clone()` |
    `int` | `creation()` | Get the creation number from the ref.
    `protected int` | `doHashCode()` | Compute the hashCode value for a given ref.
    `void` | `encode​(OtpOutputStream buf)` | Convert this ref to the equivalent Erlang external representation.
    `boolean` | `equals​(java.lang.Object o)` | Determine if two refs are equal.
    `int` | `id()` | Get the id number from the ref.
    `int[]` | `ids()` | Get the array of id numbers from the ref.
    `boolean` | `isNewRef()` | Determine whether this is a new style ref.
    `java.lang.String` | `node()` | Get the node name from the ref.
    `protected int` | `tag()` |
    `java.lang.String` | `toString()` | Get the string representation of the ref.

    - ### Methods inherited from class com.ericsson.otp.erlang.OtpErlangObject

      `bind, decode, hashCode, match`

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

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

- - ### Constructor Detail

    - #### OtpErlangRef

          @Deprecated
          public OtpErlangRef​(OtpLocalNode self)

      Deprecated.
      use OtpLocalNode:createRef() instead
      Create a unique Erlang ref belonging to the local node.
      Parameters:
        `self` - the local node.

    - #### OtpErlangRef

          public OtpErlangRef​(OtpInputStream buf)
                       throws OtpErlangDecodeException

      Create an Erlang ref from a stream containing a ref encoded in Erlang external format.
      Parameters:
        `buf` - the stream containing the encoded ref.
      Throws:
        `OtpErlangDecodeException` - if the buffer does not contain a valid external representation of an Erlang ref.

    - #### OtpErlangRef

          public OtpErlangRef​(java.lang.String node,
                              int id,
                              int creation)

      Create an old style Erlang ref from its components.
      Parameters:
        `node` - the nodename.
        `id` - an arbitrary number. Only the low order 18 bits will be used.
        `creation` - another arbitrary number.

    - #### OtpErlangRef

          public OtpErlangRef​(java.lang.String node,
                              int[] ids,
                              int creation)

      Create a new style Erlang ref from its components.
      Parameters:
        `node` - the nodename.
        `ids` - an array of arbitrary numbers. Only the low order 18 bits of the first number will be used. If the array contains only one number, an old style ref will be written instead. At most three numbers will be read from the array.
        `creation` - node incarnation number. Avoid values 0 to 3.

    - #### OtpErlangRef

          public OtpErlangRef​(int tag,
                              java.lang.String node,
                              int[] ids,
                              int creation)

      Create a new(er) style Erlang ref from its components.
      Parameters:
        `tag` - the external format to be compliant with. OtpExternal.newRefTag where only a subset of the bits are used (see other constructor) OtpExternal.newerRefTag where all bits of ids and creation are used. newerPortTag can only be decoded by OTP-19 and newer.
        `node` - the nodename.
        `ids` - an array of arbitrary numbers. At most three numbers will be read from the array.
        `creation` - another arbitrary number.

  - ### Method Detail

    - #### tag

          protected int tag()

    - #### id

          public int id()

      Get the id number from the ref. Old style refs have only one id number. If this is a new style ref, the first id number is returned.
      Returns:
        the id number from the ref.

    - #### ids

          public int[] ids()

      Get the array of id numbers from the ref. If this is an old style ref, the array is of length 1. If this is a new style ref, the array has length 3-5.
      Returns:
        the array of id numbers from the ref.

    - #### isNewRef

          public boolean isNewRef()

      Determine whether this is a new style ref.
      Returns:
        true if this ref is a new style ref, false otherwise.

    - #### creation

          public int creation()

      Get the creation number from the ref.
      Returns:
        the creation number from the ref.

    - #### node

          public java.lang.String node()

      Get the node name from the ref.
      Returns:
        the node name from the ref.

    - #### toString

          public java.lang.String toString()

      Get the string representation of the ref. Erlang refs are printed as #Ref<node.id>
      Specified by:
        `toString` in class `OtpErlangObject`
      Returns:
        the string representation of the ref.

    - #### encode

          public void encode​(OtpOutputStream buf)

      Convert this ref to the equivalent Erlang external representation.
      Specified by:
        `encode` in class `OtpErlangObject`
      Parameters:
        `buf` - an output stream to which the encoded ref should be written.

    - #### equals

          public boolean equals​(java.lang.Object o)

      Determine if two refs are equal. Refs are equal if their components are equal. New refs and old refs are considered equal if the node, creation and first id number are equal.
      Specified by:
        `equals` in class `OtpErlangObject`
      Parameters:
        `o` - the other ref to compare to.
      Returns:
        true if the refs are equal, false otherwise.

    - #### doHashCode

          protected int doHashCode()

      Compute the hashCode value for a given ref. This function is compatible with equal.
      Overrides:
        `doHashCode` in class `OtpErlangObject`
      Returns:
        the hashCode of the node.

    - #### clone

          public java.lang.Object clone()

      Overrides:
        `clone` in class `OtpErlangObject`