# Class SimpleLinkRequest

java.lang.Object
jdk.dynalink.linker.support.SimpleLinkRequest

All Implemented Interfaces:
  `LinkRequest`

public class SimpleLinkRequest extends Object implements LinkRequest
Default simple implementation of `LinkRequest`.

Since:
  9

## Constructor Summary

Constructors
Constructor
Description
`SimpleLinkRequest(CallSiteDescriptor callSiteDescriptor, boolean callSiteUnstable, Object... arguments)`
Creates a new link request.

## Method Summary

Modifier and Type
Method
Description
`Object[]`
`getArguments()`
Returns the arguments for the invocation being linked.
`CallSiteDescriptor`
`getCallSiteDescriptor()`
Returns the call site descriptor for the call site being linked.
`Object`
`getReceiver()`
Returns the first argument for the invocation being linked; this is typically the receiver object.
`boolean`
`isCallSiteUnstable()`
Returns true if the call site is considered unstable, that is, it has been relinked more times than was specified in `DynamicLinkerFactory.setUnstableRelinkThreshold(int)`.
`LinkRequest`
`replaceArguments(CallSiteDescriptor newCallSiteDescriptor, Object... newArguments)`
Returns a request identical to this one with call site descriptor and arguments replaced with the ones specified.

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SimpleLinkRequest

public SimpleLinkRequest(CallSiteDescriptor callSiteDescriptor, boolean callSiteUnstable, Object... arguments)
Creates a new link request.

Parameters:
  `callSiteDescriptor` - the descriptor for the call site being linked. Must not be null.
  `callSiteUnstable` - true if the call site being linked is considered unstable.
  `arguments` - the arguments for the invocation. Must not be null.
Throws:
  `NullPointerException` - if either `callSiteDescriptor` or `arguments` is null.

## Method Details

### getArguments

public Object[] getArguments()
Description copied from interface: `LinkRequest`
Returns the arguments for the invocation being linked. The returned array must be a clone; modifications to it must not affect the arguments in this request.

Specified by:
  `getArguments` in interface `LinkRequest`
Returns:
  the arguments for the invocation being linked.

### getReceiver

public Object getReceiver()
Description copied from interface: `LinkRequest`
Returns the first argument for the invocation being linked; this is typically the receiver object. This is a shorthand for `getArguments()[0]` that also avoids the cloning of the arguments array.

Specified by:
  `getReceiver` in interface `LinkRequest`
Returns:
  the receiver object.

### getCallSiteDescriptor

public CallSiteDescriptor getCallSiteDescriptor()
Description copied from interface: `LinkRequest`
Returns the call site descriptor for the call site being linked.

Specified by:
  `getCallSiteDescriptor` in interface `LinkRequest`
Returns:
  the call site descriptor for the call site being linked.

### isCallSiteUnstable

public boolean isCallSiteUnstable()
Description copied from interface: `LinkRequest`
Returns true if the call site is considered unstable, that is, it has been relinked more times than was specified in `DynamicLinkerFactory.setUnstableRelinkThreshold(int)`. Linkers should use this as a hint to prefer producing linkage that is more stable (its guard fails less frequently), even if that assumption causes a less effective version of an operation to be linked. This is just a hint, though, and linkers are allowed to ignore this property.

Specified by:
  `isCallSiteUnstable` in interface `LinkRequest`
Returns:
  true if the call site is considered unstable.

### replaceArguments

public LinkRequest replaceArguments(CallSiteDescriptor newCallSiteDescriptor, Object... newArguments)
Description copied from interface: `LinkRequest`
Returns a request identical to this one with call site descriptor and arguments replaced with the ones specified.

Specified by:
  `replaceArguments` in interface `LinkRequest`
Parameters:
  `newCallSiteDescriptor` - the new call site descriptor
  `newArguments` - the new arguments
Returns:
  a new request identical to this one, except with the call site descriptor and arguments replaced with the specified ones.