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 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 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 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 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)`