SNIMatcher (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: javax.net.ssl, class: SNIMatcher
Keywords: javax.net.ssl.SNIMatcher class

# Class SNIMatcher

java.lang.Object
javax.net.ssl.SNIMatcher

public abstract class SNIMatcher extends Object
Instances of this class represent a matcher that performs match operations on an `SNIServerName` instance.

Servers can use Server Name Indication (SNI) information to decide if specific `SSLSocket` or `SSLEngine` instances should accept a connection. For example, when multiple "virtual" or "name-based" servers are hosted on a single underlying network address, the server application can use SNI information to determine whether this server is the exact server that the client wants to access. Instances of this class can be used by a server to verify the acceptable server names of a particular type, such as host names.

`SNIMatcher` 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:
  - `SNIServerName`
  - `SNIHostName`
  - `SSLParameters.getSNIMatchers()`
  - `SSLParameters.setSNIMatchers(Collection)`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `SNIMatcher(int type)`
  Creates an `SNIMatcher` using the specified server name type.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final int`
  `getType()`
  Returns the server name type of this `SNIMatcher` object.
  `abstract boolean`
  `matches(SNIServerName serverName)`
  Attempts to match the given `SNIServerName`.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### SNIMatcher

    protected SNIMatcher(int type)
    Creates an `SNIMatcher` using the specified server name type.
    Parameters:
      `type` - the type of the server name that this matcher performs on
    Throws:
      `IllegalArgumentException` - if `type` is not in the range of 0 to 255, inclusive.

- ## Method Details

  - ### getType

    public final int getType()
    Returns the server name type of this `SNIMatcher` object.
    Returns:
      the server name type of this `SNIMatcher` object.
    See Also:
      - `SNIServerName`

  - ### matches

    public abstract boolean matches(SNIServerName serverName)
    Attempts to match the given `SNIServerName`.
    Parameters:
      `serverName` - the `SNIServerName` instance on which this matcher performs match operations
    Returns:
      `true` if, and only if, the matcher matches the given `serverName`
    Throws:
      `NullPointerException` - if `serverName` is `null`
      `IllegalArgumentException` - if `serverName` is not of the given server name type of this matcher
    See Also:
      - `SNIServerName`