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

## Uses of Class
java.lang.invoke.MethodHandles.Lookup

- Packages that use MethodHandles.Lookup
  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 | Contains interfaces and classes that are used to link an `invokedynamic` call site.
  jdk.dynalink.linker | Contains interfaces and classes needed by language runtimes to implement their own language-specific object models and type conversions.
  jdk.dynalink.linker.support | Contains classes that make it more convenient for language runtimes to implement their own language-specific object models and type conversions by providing basic implementations of some classes as well as various utilities.

- - ### Uses of MethodHandles.Lookup in java.lang.invoke

    Methods in java.lang.invoke that return MethodHandles.Lookup
    Modifier and Type | Method | Description
    --- | --- | ---
    `MethodHandles.Lookup` | MethodHandles.Lookup.`dropLookupMode​(int modeToDrop)` | Creates a lookup on the same lookup class which this lookup object finds members, but with a lookup mode that has lost the given lookup mode.
    `MethodHandles.Lookup` | MethodHandles.Lookup.`in​(Class<?> requestedLookupClass)` | Creates a lookup on the specified new lookup class.
    `static MethodHandles.Lookup` | MethodHandles.`lookup()` | Returns a `lookup object` with full capabilities to emulate all supported bytecode behaviors of the caller.
    `static MethodHandles.Lookup` | MethodHandles.`privateLookupIn​(Class<?> targetClass, MethodHandles.Lookup lookup)` | Returns a `lookup object` with full capabilities to emulate all supported bytecode behaviors, including private access, on a target class.
    `static MethodHandles.Lookup` | MethodHandles.`publicLookup()` | Returns a `lookup object` which is trusted minimally.

    Methods in java.lang.invoke with parameters of type MethodHandles.Lookup
    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.
    `static MethodHandles.Lookup` | MethodHandles.`privateLookupIn​(Class<?> targetClass, MethodHandles.Lookup lookup)` | Returns a `lookup object` with full capabilities to emulate all supported bytecode behaviors, including private access, on a target class.
    `<T extends Member> T` | MethodHandleInfo.`reflectAs​(Class<T> expected, MethodHandles.Lookup lookup)` | Reflects the underlying member as a method, constructor, or field object.

  - ### Uses of MethodHandles.Lookup in jdk.dynalink

    Methods in jdk.dynalink that return MethodHandles.Lookup
    Modifier and Type | Method | Description
    --- | --- | ---
    `MethodHandles.Lookup` | SecureLookupSupplier.`getLookup()` | Returns the lookup secured by this `SecureLookupSupplier`.
    `protected MethodHandles.Lookup` | SecureLookupSupplier.`getLookupPrivileged()` | Returns the value of `SecureLookupSupplier.getLookup()` without a security check.

    Constructors in jdk.dynalink with parameters of type MethodHandles.Lookup
    Constructor | Description
    --- | ---
    `CallSiteDescriptor​(MethodHandles.Lookup lookup, Operation operation, MethodType methodType)` | Creates a new call site descriptor.
    `SecureLookupSupplier​(MethodHandles.Lookup lookup)` | Creates a new secure lookup supplier, securing the passed lookup.

  - ### Uses of MethodHandles.Lookup in jdk.dynalink.linker

    Method parameters in jdk.dynalink.linker with type arguments of type MethodHandles.Lookup
    Modifier and Type | Method | Description
    --- | --- | ---
    `GuardedInvocation` | GuardingTypeConverterFactory.`convertToType​(Class<?> sourceType, Class<?> targetType, Supplier<MethodHandles.Lookup> lookupSupplier)` | Returns a guarded type conversion that receives a value of the specified source type and returns a value converted to the specified target type.

  - ### Uses of MethodHandles.Lookup in jdk.dynalink.linker.support

    Methods in jdk.dynalink.linker.support with parameters of type MethodHandles.Lookup
    Modifier and Type | Method | Description
    --- | --- | ---
    `static MethodHandle` | Lookup.`findOwnSpecial​(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes)` | Given a lookup, finds using `Lookup.findSpecial(Class, String, MethodType)` a method on that lookup's class.
    `static MethodHandle` | Lookup.`findOwnStatic​(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes)` | Given a lookup, finds using `Lookup.findStatic(Class, String, MethodType)` a method on that lookup's class.
    `static MethodHandle` | Lookup.`unreflect​(MethodHandles.Lookup lookup, Method m)` | Performs a `unreflect(Method)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
    `static MethodHandle` | Lookup.`unreflectConstructor​(MethodHandles.Lookup lookup, Constructor<?> c)` | Performs a `unreflectConstructor(Constructor)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.

    Constructors in jdk.dynalink.linker.support with parameters of type MethodHandles.Lookup
    Constructor | Description
    --- | ---
    `Lookup​(MethodHandles.Lookup lookup)` | Creates a new instance, bound to an instance of `MethodHandles.Lookup`.