MethodHandles.Lookup.Bind(Object, String, MethodType) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает дескриптор метода с ранней привязкой к нестатическому методу.
[Android.Runtime.Register("bind", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public Java.Lang.Invoke.MethodHandle Bind(Java.Lang.Object receiver, string name, Java.Lang.Invoke.MethodType type);
[<Android.Runtime.Register("bind", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
member this.Bind : Java.Lang.Object * string * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle
Параметры
- receiver
- Object
Объект, из которого осуществляется доступ к методу
- name
- String
имя метода
- type
- MethodType
Тип метода с аргументом приемника опущен
Возвращаемое значение
требуемый дескриптор метода
- Атрибуты
Комментарии
Создает дескриптор метода с ранней привязкой к нестатическому методу. Получатель должен иметь супертип defc , в котором метод заданного имени и типа доступен для класса подстановки. Метод и все его типы аргументов должны быть доступны для объекта подстановки. Тип дескриптора метода будет иметь тип метода без вставки дополнительного параметра приемника. Заданный получатель будет привязан к дескриптору метода, чтобы каждый вызов дескриптора метода вызывал запрошенный метод на заданном приемнике.
Возвращаемый дескриптор метода будет иметь переменную methodHandle#asVarargsCollector, если и только если бит модификатора0x0080 переменной arity метода задан <>em и</em> аргумент конечного массива не является единственным аргументом. (Если аргумент конечного массива является единственным аргументом, заданное значение приемника будет привязано к нему.)
Это эквивалентно следующему коду: <blockquote>
{@code
import static java.lang.invoke.MethodHandles.*;
import static java.lang.invoke.MethodType.*;
...
MethodHandle mh0 = lookup().findVirtual(defc, name, type);
MethodHandle mh1 = mh0.bindTo(receiver);
MethodType mt1 = mh1.type();
if (mh0.isVarargsCollector())
mh1 = mh1.asVarargsCollector(mt1.parameterType(mt1.parameterCount()-1));
return mh1;
}
</blockquote> , где defc находится либо receiver.getClass() супер тип этого класса, в котором запрошенный метод доступен для класса подстановки. (Обратите внимание, что bindTo не сохраняет arity переменной.)
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".