Module java.base
Package java.net

## Class Proxy

- java.lang.Object
- - java.net.Proxy

-     public class Proxy
      extends Object

  This class represents a proxy setting, typically a type (http, socks) and a socket address. A `Proxy` is an immutable object.
  Since:
    1.5
  See Also:
    `ProxySelector`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `Proxy.Type` | Represents the proxy type.

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Proxy` | `NO_PROXY` | A proxy setting that represents a `DIRECT` connection, basically telling the protocol handler not to use any proxying.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Proxy​(Proxy.Type type, SocketAddress sa)` | Creates an entry representing a PROXY connection.

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `SocketAddress` | `address()` | Returns the socket address of the proxy, or `null` if its a direct connection.
    `boolean` | `equals​(Object obj)` | Compares this object against the specified object.
    `int` | `hashCode()` | Returns a hashcode for this Proxy.
    `String` | `toString()` | Constructs a string representation of this Proxy.
    `Proxy.Type` | `type()` | Returns the proxy type.

    - ### Methods declared in class java.lang.Object

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

- - ### Field Detail

    - #### NO_PROXY

          public static final Proxy NO_PROXY

      A proxy setting that represents a `DIRECT` connection, basically telling the protocol handler not to use any proxying. Used, for instance, to create sockets bypassing any other global proxy settings (like SOCKS):

      `Socket s = new Socket(Proxy.NO_PROXY);`

  - ### Constructor Detail

    - #### Proxy

          public Proxy​(Proxy.Type type,
                       SocketAddress sa)

      Creates an entry representing a PROXY connection. Certain combinations are illegal. For instance, for types Http, and Socks, a SocketAddress must be provided.

      Use the `Proxy.NO_PROXY` constant for representing a direct connection.

      Parameters:
        `type` - the `Type` of the proxy
        `sa` - the `SocketAddress` for that proxy
      Throws:
        `IllegalArgumentException` - when the type and the address are incompatible

  - ### Method Detail

    - #### type

          public Proxy.Type type()

      Returns the proxy type.
      Returns:
        a Type representing the proxy type

    - #### address

          public SocketAddress address()

      Returns the socket address of the proxy, or `null` if its a direct connection.
      Returns:
        a `SocketAddress` representing the socket end point of the proxy

    - #### toString

          public String toString()

      Constructs a string representation of this Proxy. This String is constructed by calling toString() on its type and concatenating " @ " and the toString() result from its address if its type is not `DIRECT`.
      Overrides:
        `toString` in class `Object`
      Returns:
        a string representation of this object.

    - #### equals

          public final boolean equals​(Object obj)

      Compares this object against the specified object. The result is `true` if and only if the argument is not `null` and it represents the same proxy as this object.

      Two instances of `Proxy` represent the same address if both the SocketAddresses and type are equal.

      Overrides:
        `equals` in class `Object`
      Parameters:
        `obj` - the object to compare against.
      Returns:
        `true` if the objects are the same; `false` otherwise.
      See Also:
        `InetSocketAddress.equals(java.lang.Object)`

    - #### hashCode

          public final int hashCode()

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