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