SNIServerName (Java Platform SE 8 )
Keywords: javax.net.ssl.SNIServerName class
Date: 2026-03-16

compact1, compact2, compact3
javax.net.ssl

## Class SNIServerName

- java.lang.Object
- - javax.net.ssl.SNIServerName

- Direct Known Subclasses:
    SNIHostName

      public abstract class SNIServerName
      extends Object

  Instances of this class represent a server name in a Server Name Indication (SNI) extension.

  The SNI extension is a feature that extends the SSL/TLS protocols to indicate what server name the client is attempting to connect to during handshaking. See section 3, "Server Name Indication", of TLS Extensions (RFC 6066).

  `SNIServerName` objects are immutable. Subclasses should not provide methods that can change the state of an instance once it has been created.

  Since:
    1.8
  See Also:
    `SSLParameters.getServerNames()`, `SSLParameters.setServerNames(List)`

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `SNIServerName(int type, byte[] encoded)` Creates an `SNIServerName` using the specified name type and encoded value.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object other)` Indicates whether some other object is "equal to" this server name.
    `byte[]` | `getEncoded()` Returns a copy of the encoded server name value of this server name.
    `int` | `getType()` Returns the name type of this server name.
    `int` | `hashCode()` Returns a hash code value for this server name.
    `String` | `toString()` Returns a string representation of this server name, including the server name type and the encoded server name value in this `SNIServerName` object.

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

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

- - ### Constructor Detail

    - #### SNIServerName

          protected SNIServerName(int type,
                                  byte[] encoded)

      Creates an `SNIServerName` using the specified name type and encoded value.

      Note that the `encoded` byte array is cloned to protect against subsequent modification.

      Parameters:
        `type` - the type of the server name
        `encoded` - the encoded value of the server name
      Throws:
        `IllegalArgumentException` - if `type` is not in the range of 0 to 255, inclusive.
        `NullPointerException` - if `encoded` is null

  - ### Method Detail

    - #### getType

          public final int getType()

      Returns the name type of this server name.
      Returns:
        the name type of this server name

    - #### getEncoded

          public final byte[] getEncoded()

      Returns a copy of the encoded server name value of this server name.
      Returns:
        a copy of the encoded server name value of this server name

    - #### equals

          public boolean equals(Object other)

      Indicates whether some other object is "equal to" this server name.
      Overrides:
        `equals` in class `Object`
      Parameters:
        `other` - the reference object with which to compare.
      Returns:
        true if, and only if, `other` is of the same class of this object, and has the same name type and encoded value as this server name.
      See Also:
        `Object.hashCode()`, `HashMap`

    - #### hashCode

          public int hashCode()

      Returns a hash code value for this server name.

      The hash code value is generated using the name type and encoded value of this server name.

      Overrides:
        `hashCode` in class `Object`
      Returns:
        a hash code value for this server name.
      See Also:
        `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`

    - #### toString

          public String toString()

      Returns a string representation of this server name, including the server name type and the encoded server name value in this `SNIServerName` object.

      The exact details of the representation are unspecified and subject to change, but the following may be regarded as typical:

               "type= <name type>, value= <name value>"

      In this class, the format of "<name type>" is "[LITERAL] (INTEGER)", where the optional "LITERAL" is the literal name, and INTEGER is the integer value of the name type. The format of "<name value>" is "XX:...:XX", where "XX" is the hexadecimal digit representation of a byte value. For example, a returned value of an pseudo server name may look like:

               "type=(31), value=77:77:77:2E:65:78:61:6D:70:6C:65:2E:63:6E"

      or

               "type=host_name (0), value=77:77:77:2E:65:78:61:6D:70:6C:65:2E:63:6E"

      Please NOTE that the exact details of the representation are unspecified and subject to change, and subclasses may override the method with their own formats.

      Overrides:
        `toString` in class `Object`
      Returns:
        a string representation of this server name

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.