Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Protected Ctors](https://developer.android.com/reference/javax/net/ssl/SNIMatcher#proctors) \| [Methods](https://developer.android.com/reference/javax/net/ssl/SNIMatcher#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/javax/net/ssl/SNIMatcher#inhmethods)

# SNIMatcher


`
public


abstract
class
SNIMatcher
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | javax.net.ssl.SNIMatcher |

<br />

*** ** * ** ***

Instances of this class represent a matcher that performs match
operations on an `https://developer.android.com/reference/javax/net/ssl/SNIServerName` instance.


Servers can use Server Name Indication (SNI) information to decide if
specific `https://developer.android.com/reference/javax/net/ssl/SSLSocket` or `https://developer.android.com/reference/javax/net/ssl/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.
**See also:**

- `https://developer.android.com/reference/javax/net/ssl/SNIServerName`
- `https://developer.android.com/reference/javax/net/ssl/SNIHostName`
- `https://developer.android.com/reference/javax/net/ssl/SSLParameters#getSNIMatchers()`
- `https://developer.android.com/reference/javax/net/ssl/SSLParameters#setSNIMatchers(java.util.Collection<javax.net.ssl.SNIMatcher>)`

## Summary

| ### Protected constructors ||
|---|---|
| ` https://developer.android.com/reference/javax/net/ssl/SNIMatcher#SNIMatcher(int)(int type) ` Creates an `SNIMatcher` using the specified server name type. |

| ### Public methods ||
|---|---|
| ` final int` | ` https://developer.android.com/reference/javax/net/ssl/SNIMatcher#getType()() ` Returns the server name type of this `SNIMatcher` object. |
| ` abstract boolean` | ` https://developer.android.com/reference/javax/net/ssl/SNIMatcher#matches(javax.net.ssl.SNIServerName)(https://developer.android.com/reference/javax/net/ssl/SNIServerName serverName) ` Attempts to match the given `https://developer.android.com/reference/javax/net/ssl/SNIServerName`. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(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. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(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` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Protected constructors

### SNIMatcher

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected SNIMatcher (int type)
```

Creates an `SNIMatcher` using the specified server name type.

<br />

| Parameters ||
|---|---|
| `type` | `int`: the type of the server name that this matcher performs on <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `type` is not in the range of 0 to 255, inclusive. |

## Public methods

### getType

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public final int getType ()
```

Returns the server name type of this `SNIMatcher` object.

<br />

| Returns ||
|---|---|
| `int` | the server name type of this `SNIMatcher` object. <br /> |

**See also:**

- `https://developer.android.com/reference/javax/net/ssl/SNIServerName`

### matches

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract boolean matches (SNIServerName serverName)
```

Attempts to match the given `https://developer.android.com/reference/javax/net/ssl/SNIServerName`.

<br />

| Parameters ||
|---|---|
| `serverName` | `SNIServerName`: the `https://developer.android.com/reference/javax/net/ssl/SNIServerName` instance on which this matcher performs match operations <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if, and only if, the matcher matches the given `serverName` <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `serverName` is not of the given server name type of this matcher |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if `serverName` is `null` |

**See also:**

- `https://developer.android.com/reference/javax/net/ssl/SNIServerName`