Язык

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 переменной.)

Java документации по java.lang.invoke.MethodHandles.Lookup.bind(java.lang.Object, java.lang.String, java.lang.invoke.MethodType).

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

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