Класс Lookup
- java.lang.Object
-
- jdk.dynalink.linker.support.Lookup
public final class Lookup extends Object
Обёртка вокруг MethodHandles.Lookup, маскирующая исключения с проверкой. Она полезна в тех случаях, когда вы ищете методы внутри собственного кода (в противном случае это ошибка, если они отсутствуют).
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static Lookup | PUBLIC | Канонический объект Lookup, который оборачивает |
Конструкторы
| Конструктор | Описание |
|---|---|
Lookup(MethodHandles.Lookup lookup) | Создаёт новый экземпляр, привязанный к экземпляру |
Методы
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Поля
PUBLIC
public static final Lookup PUBLIC
Канонический объект Lookup, который оборачивает MethodHandles.publicLookup().
Конструкторы
Lookup
public Lookup(MethodHandles.Lookup lookup)
Создаёт новый экземпляр, привязанный к экземпляру MethodHandles.Lookup.
- Параметры:
-
lookup- делегируемыйMethodHandles.Lookup.
Методы
unreflect
public MethodHandle unreflect(Method m)
Выполняет MethodHandles.Lookup.unreflect(Method), преобразуя любые встреченные IllegalAccessException в IllegalAccessError.
- Параметры:
-
m- метод, который нужно разыменовать - Возвращает:
- обработчик разыменованного метода.
- Исключение:
-
IllegalAccessError- если метод недоступен.
unreflect
public static MethodHandle unreflect(MethodHandles.Lookup lookup,
Method m) Выполняет MethodHandles.Lookup.unreflect(Method), преобразуя любые встреченные IllegalAccessException в IllegalAccessError.
- Параметры:
-
lookup- поиск, используемый для разыменования -
m- метод, который нужно разыменовать - Возвращает:
- обработчик разыменованного метода.
- Исключение:
-
IllegalAccessError- если метод недоступен.
unreflectGetter
public MethodHandle unreflectGetter(Field f)
Выполняет MethodHandles.Lookup.unreflectGetter(Field), преобразуя любые встреченные IllegalAccessException в IllegalAccessError.
- Параметры:
-
f- поле, для которого создаётся обработчик получения - Возвращает:
- обработчик получения разыменованного поля.
- Исключение:
-
IllegalAccessError- если метод получения недоступен.
findGetter
public MethodHandle findGetter(Class<?> refc,
String name,
Class<?> type) Выполняет MethodHandles.Lookup.findGetter(Class, String, Class), преобразуя любые встреченные IllegalAccessException в IllegalAccessError и NoSuchFieldException в NoSuchFieldError.
- Параметры:
-
refc- класс, в котором объявлено поле -
name- имя поля -
type- тип поля - Возвращает:
- обработчик получения разыменованного поля.
- Исключение:
-
IllegalAccessError- если поле недоступно. -
NoSuchFieldError- если поле не существует.
unreflectSetter
public MethodHandle unreflectSetter(Field f)
Выполняет MethodHandles.Lookup.unreflectSetter(Field), преобразуя любые встреченные IllegalAccessException в IllegalAccessError.
- Параметры:
-
f- поле, для которого создаётся обработчик установки - Возвращает:
- обработчик установки разыменованного поля.
- Исключение:
-
IllegalAccessError- если поле недоступно. -
NoSuchFieldError- если поле не существует.
unreflectConstructor
public MethodHandle unreflectConstructor(Constructor<?> c)
Выполняет MethodHandles.Lookup.unreflectConstructor(Constructor), преобразуя любые встреченные IllegalAccessException в IllegalAccessError.
- Параметры:
-
c- конструктор, который нужно разыменовать - Возвращает:
- обработчик разыменованного конструктора.
- Исключение:
-
IllegalAccessError- если конструктор недоступен.
unreflectConstructor
public static MethodHandle unreflectConstructor(MethodHandles.Lookup lookup,
Constructor<?> c) Выполняет MethodHandles.Lookup.unreflectConstructor(Constructor), преобразуя любые встреченные IllegalAccessException в IllegalAccessError.
- Параметры:
-
lookup- поиск, используемый для разыменования -
c- конструктор, который нужно разыменовать - Возвращает:
- обработчик разыменованного конструктора.
- Исключение:
-
IllegalAccessError- если конструктор недоступен.
findSpecial
public MethodHandle findSpecial(Class<?> declaringClass,
String name,
MethodType type) Выполняет MethodHandles.Lookup.findSpecial(Class, String, MethodType, Class) в базовом поиске. Преобразует любые встреченные IllegalAccessException в IllegalAccessError и NoSuchMethodException в NoSuchMethodError.
- Параметры:
-
declaringClass- класс, в котором объявлена методика -
name- имя метода -
type- тип метода - Возвращает:
- обработчик метода
- Исключение:
-
IllegalAccessError- если метод недоступен. -
NoSuchMethodError- если метод не существует.
findStatic
public MethodHandle findStatic(Class<?> declaringClass,
String name,
MethodType type) Выполняет MethodHandles.Lookup.findStatic(Class, String, MethodType) в базовом поиске. Преобразует любые встреченные IllegalAccessException в IllegalAccessError и NoSuchMethodException в NoSuchMethodError.
- Параметры:
-
declaringClass- класс, в котором объявлена методика -
name- имя метода -
type- тип метода - Возвращает:
- обработчик метода
- Исключение:
-
IllegalAccessError- если метод недоступен. -
NoSuchMethodError- если метод не существует.
findVirtual
public MethodHandle findVirtual(Class<?> declaringClass,
String name,
MethodType type) Выполняет MethodHandles.Lookup.findVirtual(Class, String, MethodType) в базовом поиске. Преобразует любые встреченные IllegalAccessException в IllegalAccessError и NoSuchMethodException в NoSuchMethodError.
- Параметры:
-
declaringClass- класс, в котором объявлена методика -
name- имя метода -
type- тип метода - Возвращает:
- обработчик метода
- Исключение:
-
IllegalAccessError- если метод недоступен. -
NoSuchMethodError- если метод не существует.
findOwnSpecial
public static MethodHandle findOwnSpecial(MethodHandles.Lookup lookup,
String name,
Class<?> rtype,
Class<?>... ptypes) Используя findSpecial(Class, String, MethodType), находит метод в классе данного поиска. Полезно в коде классов для удобного связывания со своими закрытыми методами.
- Параметры:
-
lookup- поиск для класса -
name- имя метода -
rtype- возвращаемый тип метода -
ptypes- типы параметров метода - Возвращает:
- обработчик метода
findOwnSpecial
public MethodHandle findOwnSpecial(String name,
Class<?> rtype,
Class<?>... ptypes) Находит метод в классе данного поиска с помощью findSpecial(Class, String, MethodType). Полезно в коде классов для удобного связывания со своими закрытыми методами. Также удобнее, чем findSpecial, поскольку вы можете просто указать типы параметров, а не класс поиска.
- Параметры:
-
name- имя метода -
rtype- возвращаемый тип метода -
ptypes- типы параметров метода - Возвращает:
- обработчик метода
findOwnStatic
public static MethodHandle findOwnStatic(MethodHandles.Lookup lookup,
String name,
Class<?> rtype,
Class<?>... ptypes) Используя findStatic(Class, String, MethodType), находит статический метод в классе данного поиска. Полезно в коде классов для удобного связывания со своими закрытыми методами. Удобнее использовать, чем findStatic, поскольку вы можете просто указать типы параметров, а не класс поиска.
- Параметры:
-
lookup- поиск класса -
name- имя метода -
rtype- тип возвращаемого значения метода -
ptypes- типы параметров метода - Возвращает:
- обработчик метода
findOwnStatic
public MethodHandle findOwnStatic(String name,
Class<?> rtype,
Class<?>... ptypes) Находит метод в классе, используя findStatic(Class, String, MethodType). Полезно для удобной ссылки на собственные закрытые методы класса. Более удобный вариант, чем findStatic, так как вам нужно только указать типы параметров, а не класс поиска.
- Параметры:
-
name- имя метода -
rtype- тип возвращаемого значения метода -
ptypes- типы параметров метода - Возвращает:
- обработчик метода
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.dynalink/jdk/dynalink/linker/support/Lookup.html