Поделиться через


MethodHandles.Lookup.FindConstructor(Class, MethodType) Метод

Определение

Создает дескриптор метода, который создает объект и инициализирует его с помощью конструктора указанного типа.

[Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle FindConstructor (Java.Lang.Class refc, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("findConstructor", "(Ljava/lang/Class;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.FindConstructor : Java.Lang.Class * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

Параметры

refc
Class

класс или интерфейс, из которого осуществляется доступ к методу

type
MethodType

Тип метода, с аргументом приемника опущен, и тип возвращаемого значения void

Возвращаемое значение

требуемый дескриптор метода

Атрибуты

Комментарии

Создает дескриптор метода, который создает объект и инициализирует его с помощью конструктора указанного типа. Типы параметров дескриптора метода будут иметь значение конструктора, а возвращаемый тип будет ссылкой на класс конструктора. Конструктор и все его типы аргументов должны быть доступны для объекта подстановки.

Запрошенный тип должен иметь тип возвращаемого voidзначения. (Это согласуется с обработкой дескрипторов типа конструктора JVM.)

Возвращаемый дескриптор метода будет иметь переменную methodHandle#asVarargsCollector, если задана переменная arifier0x0080 () конструктора.

Если возвращенный дескриптор метода вызывается, класс конструктора будет инициализирован, если он еще не инициализирован.

<b>Example:</b><blockquote>

{@code
            import static java.lang.invoke.MethodHandles.*;
            import static java.lang.invoke.MethodType.*;
            ...
            MethodHandle MH_newArrayList = publicLookup().findConstructor(
              ArrayList.class, methodType(void.class, Collection.class));
            Collection orig = Arrays.asList("x", "y");
            Collection copy = (ArrayList) MH_newArrayList.invokeExact(orig);
            assert(orig != copy);
            assertEquals(orig, copy);
            // a variable-arity constructor:
            MethodHandle MH_newProcessBuilder = publicLookup().findConstructor(
              ProcessBuilder.class, methodType(void.class, String[].class));
            ProcessBuilder pb = (ProcessBuilder)
              MH_newProcessBuilder.invoke("x", "y", "z");
            assertEquals("[x, y, z]", pb.command().toString());
            }

</blockquote>

Документация по Java для java.lang.invoke.MethodHandles.Lookup.findConstructor(java.lang.Class<?>, java.lang.invoke.MethodType).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к