Package com.ericsson.otp.erlang

## Class OtpErlangObject

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

- All Implemented Interfaces:
    `java.io.Serializable`, `java.lang.Cloneable`
  Direct Known Subclasses:
    `OtpErlangAtom`, `OtpErlangBitstr`, `OtpErlangDouble`, `OtpErlangExternalFun`, `OtpErlangFun`, `OtpErlangList`, `OtpErlangLong`, `OtpErlangMap`, `OtpErlangPid`, `OtpErlangPort`, `OtpErlangRef`, `OtpErlangString`, `OtpErlangTuple`

      public abstract class OtpErlangObject
      extends java.lang.Object
      implements java.io.Serializable, java.lang.Cloneable

  Base class of the Erlang data type classes. This class is used to represent an arbitrary Erlang term.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected static class` | `OtpErlangObject.Hash` |

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected int` | `hashCodeValue` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `OtpErlangObject()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `<T> OtpErlangObject` | `bind​(T binds)` | Make new Erlang term replacing variables with the respective values from bindings argument(s).
    `java.lang.Object` | `clone()` |
    `static OtpErlangObject` | `decode​(OtpInputStream buf)` | Read binary data in the Erlang external format, and produce a corresponding Erlang data type object.
    `protected int` | `doHashCode()` |
    `abstract void` | `encode​(OtpOutputStream buf)` | Convert the object according to the rules of the Erlang external format.
    `abstract boolean` | `equals​(java.lang.Object o)` | Determine if two Erlang objects are equal.
    `int` | `hashCode()` |
    `<T> boolean` | `match​(OtpErlangObject term, T binds)` | Perform match operation against given term.
    `abstract java.lang.String` | `toString()` |

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

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

- - ### Field Detail

    - #### hashCodeValue

          protected int hashCodeValue

  - ### Constructor Detail

    - #### OtpErlangObject

          public OtpErlangObject()

  - ### Method Detail

    - #### toString

          public abstract java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        the printable representation of the object. This is usually similar to the representation used by Erlang for the same type of object.

    - #### encode

          public abstract void encode​(OtpOutputStream buf)

      Convert the object according to the rules of the Erlang external format. This is mainly used for sending Erlang terms in messages, however it can also be used for storing terms to disk.
      Parameters:
        `buf` - an output stream to which the encoded term should be written.

    - #### decode

          public static OtpErlangObject decode​(OtpInputStream buf)
                                        throws OtpErlangDecodeException

      Read binary data in the Erlang external format, and produce a corresponding Erlang data type object. This method is normally used when Erlang terms are received in messages, however it can also be used for reading terms from disk.
      Parameters:
        `buf` - an input stream containing one or more encoded Erlang terms.
      Returns:
        an object representing one of the Erlang data types.
      Throws:
        `OtpErlangDecodeException` - if the stream does not contain a valid representation of an Erlang term.

    - #### equals

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

      Determine if two Erlang objects are equal. In general, Erlang objects are equal if the components they consist of are equal.
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `o` - the object to compare to.
      Returns:
        true if the objects are identical.

    - #### match

          public <T> boolean match​(OtpErlangObject term,
                                   T binds)

      Perform match operation against given term.
      Parameters:
        `term` - the object to match
        `binds` - variable bindings
      Returns:
        true if match succeeded

    - #### bind

          public <T> OtpErlangObject bind​(T binds)
                                   throws OtpErlangException

      Make new Erlang term replacing variables with the respective values from bindings argument(s).
      Parameters:
        `binds` - variable bindings
      Returns:
        new term
      Throws:
        `OtpErlangException`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### doHashCode

          protected int doHashCode()

    - #### clone

          public java.lang.Object clone()

      Overrides:
        `clone` in class `java.lang.Object`