# 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 enum`
  `Proxy.Type`
  Represents the proxy type.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final 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 it's a direct connection.
  `final boolean`
  `equals(Object obj)`
  Compares this object against the specified object.
  `final int`
  `hashCode()`
  Returns a hash code value for this Proxy.
  `String`
  `toString()`
  Constructs a string representation of this Proxy.
  `Proxy.Type`
  `type()`
  Returns the proxy type.

  ### Methods declared in class Object

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

- ## Field Details

  - ### 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 Details

  - ### 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 Details

  - ### 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 it's 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 hash code value 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(Object)`