Lookup (Java SE 9 & JDK 9 )
Keywords: jdk.dynalink.linker.support.Lookup class

Module jdk.dynalink
Package jdk.dynalink.linker.support

## Class Lookup

- java.lang.Object
- - jdk.dynalink.linker.support.Lookup

-     public final class Lookup
      extends Object

  A wrapper around `MethodHandles.Lookup` that masks checked exceptions. It is useful in those cases when you're looking up methods within your own codebase (therefore it is an error if they are not present).

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Lookup` | `PUBLIC` | A canonical Lookup object that wraps `MethodHandles.publicLookup()`.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Lookup​(MethodHandles.Lookup lookup)` | Creates a new instance, bound to an instance of `MethodHandles.Lookup`.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `MethodHandle` | `findGetter​(Class<?> refc, String name, Class<?> type)` | Performs a `MethodHandles.Lookup.findGetter(Class, String, Class)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError` and `NoSuchFieldException` into a `NoSuchFieldError`.
    `static MethodHandle` | `findOwnSpecial​(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes)` | Given a lookup, finds using `findSpecial(Class, String, MethodType)` a method on that lookup's class.
    `MethodHandle` | `findOwnSpecial​(String name, Class<?> rtype, Class<?>... ptypes)` | Finds using `findSpecial(Class, String, MethodType)` a method on that lookup's class.
    `static MethodHandle` | `findOwnStatic​(MethodHandles.Lookup lookup, String name, Class<?> rtype, Class<?>... ptypes)` | Given a lookup, finds using `findStatic(Class, String, MethodType)` a method on that lookup's class.
    `MethodHandle` | `findOwnStatic​(String name, Class<?> rtype, Class<?>... ptypes)` | Finds using `findStatic(Class, String, MethodType)` a method on that lookup's class.
    `MethodHandle` | `findSpecial​(Class<?> declaringClass, String name, MethodType type)` | Performs a `MethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)` on the underlying lookup.
    `MethodHandle` | `findStatic​(Class<?> declaringClass, String name, MethodType type)` | Performs a `MethodHandles.Lookup.findStatic(Class, String, MethodType)` on the underlying lookup.
    `MethodHandle` | `findVirtual​(Class<?> declaringClass, String name, MethodType type)` | Performs a `MethodHandles.Lookup.findVirtual(Class, String, MethodType)` on the underlying lookup.
    `static MethodHandle` | `unreflect​(MethodHandles.Lookup lookup, Method m)` | Performs a `MethodHandles.Lookup.unreflect(Method)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
    `MethodHandle` | `unreflect​(Method m)` | Performs a `MethodHandles.Lookup.unreflect(Method)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
    `static MethodHandle` | `unreflectConstructor​(MethodHandles.Lookup lookup, Constructor<?> c)` | Performs a `MethodHandles.Lookup.unreflectConstructor(Constructor)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
    `MethodHandle` | `unreflectConstructor​(Constructor<?> c)` | Performs a `MethodHandles.Lookup.unreflectConstructor(Constructor)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
    `MethodHandle` | `unreflectGetter​(Field f)` | Performs a `MethodHandles.Lookup.unreflectGetter(Field)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
    `MethodHandle` | `unreflectSetter​(Field f)` | Performs a `MethodHandles.Lookup.unreflectSetter(Field)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### PUBLIC

          public static final Lookup PUBLIC

      A canonical Lookup object that wraps `MethodHandles.publicLookup()`.

  - ### Constructor Detail

    - #### Lookup

          public Lookup​(MethodHandles.Lookup lookup)

      Creates a new instance, bound to an instance of `MethodHandles.Lookup`.
      Parameters:
        `lookup` - the `MethodHandles.Lookup` it delegates to.

  - ### Method Detail

    - #### unreflect

          public MethodHandle unreflect​(Method m)

      Performs a `MethodHandles.Lookup.unreflect(Method)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
      Parameters:
        `m` - the method to unreflect
      Returns:
        the unreflected method handle.
      Throws:
        `IllegalAccessError` - if the method is inaccessible.

    - #### unreflect

          public static MethodHandle unreflect​(MethodHandles.Lookup lookup,
                                               Method m)

      Performs a `MethodHandles.Lookup.unreflect(Method)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
      Parameters:
        `lookup` - the lookup used to unreflect
        `m` - the method to unreflect
      Returns:
        the unreflected method handle.
      Throws:
        `IllegalAccessError` - if the method is inaccessible.

    - #### unreflectGetter

          public MethodHandle unreflectGetter​(Field f)

      Performs a `MethodHandles.Lookup.unreflectGetter(Field)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
      Parameters:
        `f` - the field for which a getter is unreflected
      Returns:
        the unreflected field getter handle.
      Throws:
        `IllegalAccessError` - if the getter is inaccessible.

    - #### findGetter

          public MethodHandle findGetter​(Class<?> refc,
                                         String name,
                                         Class<?> type)

      Performs a `MethodHandles.Lookup.findGetter(Class, String, Class)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError` and `NoSuchFieldException` into a `NoSuchFieldError`.
      Parameters:
        `refc` - the class declaring the field
        `name` - the name of the field
        `type` - the type of the field
      Returns:
        the unreflected field getter handle.
      Throws:
        `IllegalAccessError` - if the field is inaccessible.
        `NoSuchFieldError` - if the field does not exist.

    - #### unreflectSetter

          public MethodHandle unreflectSetter​(Field f)

      Performs a `MethodHandles.Lookup.unreflectSetter(Field)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
      Parameters:
        `f` - the field for which a setter is unreflected
      Returns:
        the unreflected field setter handle.
      Throws:
        `IllegalAccessError` - if the field is inaccessible.
        `NoSuchFieldError` - if the field does not exist.

    - #### unreflectConstructor

          public MethodHandle unreflectConstructor​(Constructor<?> c)

      Performs a `MethodHandles.Lookup.unreflectConstructor(Constructor)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
      Parameters:
        `c` - the constructor to unreflect
      Returns:
        the unreflected constructor handle.
      Throws:
        `IllegalAccessError` - if the constructor is inaccessible.

    - #### unreflectConstructor

          public static MethodHandle unreflectConstructor​(MethodHandles.Lookup lookup,
                                                          Constructor<?> c)

      Performs a `MethodHandles.Lookup.unreflectConstructor(Constructor)`, converting any encountered `IllegalAccessException` into an `IllegalAccessError`.
      Parameters:
        `lookup` - the lookup used to unreflect
        `c` - the constructor to unreflect
      Returns:
        the unreflected constructor handle.
      Throws:
        `IllegalAccessError` - if the constructor is inaccessible.

    - #### findSpecial

          public MethodHandle findSpecial​(Class<?> declaringClass,
                                          String name,
                                          MethodType type)

      Performs a `MethodHandles.Lookup.findSpecial(Class, String, MethodType, Class)` on the underlying lookup. Converts any encountered `IllegalAccessException` into an `IllegalAccessError` and `NoSuchMethodException` into a `NoSuchMethodError`.
      Parameters:
        `declaringClass` - class declaring the method
        `name` - the name of the method
        `type` - the type of the method
      Returns:
        a method handle for the method
      Throws:
        `IllegalAccessError` - if the method is inaccessible.
        `NoSuchMethodError` - if the method does not exist.

    - #### findStatic

          public MethodHandle findStatic​(Class<?> declaringClass,
                                         String name,
                                         MethodType type)

      Performs a `MethodHandles.Lookup.findStatic(Class, String, MethodType)` on the underlying lookup. Converts any encountered `IllegalAccessException` into an `IllegalAccessError` and `NoSuchMethodException` into a `NoSuchMethodError`.
      Parameters:
        `declaringClass` - class declaring the method
        `name` - the name of the method
        `type` - the type of the method
      Returns:
        a method handle for the method
      Throws:
        `IllegalAccessError` - if the method is inaccessible.
        `NoSuchMethodError` - if the method does not exist.

    - #### findVirtual

          public MethodHandle findVirtual​(Class<?> declaringClass,
                                          String name,
                                          MethodType type)

      Performs a `MethodHandles.Lookup.findVirtual(Class, String, MethodType)` on the underlying lookup. Converts any encountered `IllegalAccessException` into an `IllegalAccessError` and `NoSuchMethodException` into a `NoSuchMethodError`.
      Parameters:
        `declaringClass` - class declaring the method
        `name` - the name of the method
        `type` - the type of the method
      Returns:
        a method handle for the method
      Throws:
        `IllegalAccessError` - if the method is inaccessible.
        `NoSuchMethodError` - if the method does not exist.

    - #### findOwnSpecial

          public static MethodHandle findOwnSpecial​(MethodHandles.Lookup lookup,
                                                    String name,
                                                    Class<?> rtype,
                                                    Class<?>... ptypes)

      Given a lookup, finds using `findSpecial(Class, String, MethodType)` a method on that lookup's class. Useful in classes' code for convenient linking to their own privates.
      Parameters:
        `lookup` - the lookup for the class
        `name` - the name of the method
        `rtype` - the return type of the method
        `ptypes` - the parameter types of the method
      Returns:
        the method handle for the method

    - #### findOwnSpecial

          public MethodHandle findOwnSpecial​(String name,
                                             Class<?> rtype,
                                             Class<?>... ptypes)

      Finds using `findSpecial(Class, String, MethodType)` a method on that lookup's class. Useful in classes' code for convenient linking to their own privates. It's also more convenient than `findSpecial` in that you can just list the parameter types, and don't have to specify lookup class.
      Parameters:
        `name` - the name of the method
        `rtype` - the return type of the method
        `ptypes` - the parameter types of the method
      Returns:
        the method handle for the method

    - #### findOwnStatic

          public static MethodHandle findOwnStatic​(MethodHandles.Lookup lookup,
                                                   String name,
                                                   Class<?> rtype,
                                                   Class<?>... ptypes)

      Given a lookup, finds using `findStatic(Class, String, MethodType)` a method on that lookup's class. Useful in classes' code for convenient linking to their own privates. It's easier to use than `findStatic` in that you can just list the parameter types, and don't have to specify lookup class.
      Parameters:
        `lookup` - the lookup for the class
        `name` - the name of the method
        `rtype` - the return type of the method
        `ptypes` - the parameter types of the method
      Returns:
        the method handle for the method

    - #### findOwnStatic

          public MethodHandle findOwnStatic​(String name,
                                            Class<?> rtype,
                                            Class<?>... ptypes)

      Finds using `findStatic(Class, String, MethodType)` a method on that lookup's class. Useful in classes' code for convenient linking to their own privates. It's easier to use than `findStatic` in that you can just list the parameter types, and don't have to specify lookup class.
      Parameters:
        `name` - the name of the method
        `rtype` - the return type of the method
        `ptypes` - the parameter types of the method
      Returns:
        the method handle for the method