Uses of Class java.lang.invoke.CallSite (Java SE 10 & JDK 10 )

## Uses of Class
java.lang.invoke.CallSite

- Packages that use CallSite
  Package | Description
  --- | ---
  java.lang.invoke | The `java.lang.invoke` package contains dynamic language support provided directly by the Java core class libraries and virtual machine.
  jdk.dynalink.support | Contains classes that make using Dynalink more convenient by providing basic implementations of some classes as well as various utilities.

- - ### Uses of CallSite in java.lang.invoke

    Subclasses of CallSite in java.lang.invoke
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `ConstantCallSite` | A `ConstantCallSite` is a `CallSite` whose target is permanent, and can never be changed.
    `class` | `MutableCallSite` | A `MutableCallSite` is a `CallSite` whose target variable behaves like an ordinary field.
    `class` | `VolatileCallSite` | A `VolatileCallSite` is a `CallSite` whose target acts like a volatile variable.

    Methods in java.lang.invoke that return CallSite
    Modifier and Type | Method | Description
    --- | --- | ---
    `static CallSite` | LambdaMetafactory.`altMetafactory​(MethodHandles.Lookup caller, String invokedName, MethodType invokedType, Object... args)` | Facilitates the creation of simple "function objects" that implement one or more interfaces by delegation to a provided `MethodHandle`, after appropriate type adaptation and partial evaluation of arguments.
    `static CallSite` | StringConcatFactory.`makeConcat​(MethodHandles.Lookup lookup, String name, MethodType concatType)` | Facilitates the creation of optimized String concatenation methods, that can be used to efficiently concatenate a known number of arguments of known types, possibly after type adaptation and partial evaluation of arguments.
    `static CallSite` | StringConcatFactory.`makeConcatWithConstants​(MethodHandles.Lookup lookup, String name, MethodType concatType, String recipe, Object... constants)` | Facilitates the creation of optimized String concatenation methods, that can be used to efficiently concatenate a known number of arguments of known types, possibly after type adaptation and partial evaluation of arguments.
    `static CallSite` | LambdaMetafactory.`metafactory​(MethodHandles.Lookup caller, String invokedName, MethodType invokedType, MethodType samMethodType, MethodHandle implMethod, MethodType instantiatedMethodType)` | Facilitates the creation of simple "function objects" that implement one or more interfaces by delegation to a provided `MethodHandle`, after appropriate type adaptation and partial evaluation of arguments.

  - ### Uses of CallSite in jdk.dynalink.support

    Subclasses of CallSite in jdk.dynalink.support
    Modifier and Type | Class | Description
    --- | --- | ---
    `class` | `AbstractRelinkableCallSite` | A basic implementation of the `RelinkableCallSite` as a `MutableCallSite`.
    `class` | `ChainedCallSite` | A relinkable call site that implements a polymorphic inline caching strategy.
    `class` | `SimpleRelinkableCallSite` | A relinkable call site that implements monomorphic inline caching strategy, only being linked to a single `GuardedInvocation` at any given time.