Язык

MethodHandles.ExplicitCastArguments(MethodHandle, MethodType) Метод

Определение

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

[Android.Runtime.Register("explicitCastArguments", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)]
public static Java.Lang.Invoke.MethodHandle? ExplicitCastArguments(Java.Lang.Invoke.MethodHandle? target, Java.Lang.Invoke.MethodType? newType);
[<Android.Runtime.Register("explicitCastArguments", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=26)>]
static member ExplicitCastArguments : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodType -> Java.Lang.Invoke.MethodHandle

Параметры

target
MethodHandle

Дескриптор метода для вызова после повторного типа аргументов

newType
MethodType

ожидаемый тип нового дескриптора метода

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

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

Атрибуты

Комментарии

Создает дескриптор метода, который адаптирует тип данного дескриптора метода к новому типу по парным аргументам и преобразованию возвращаемого типа. Исходный тип и новый тип должны иметь одинаковое количество аргументов. Результирующий дескриптор метода гарантированно сообщает типу, который равен требуемому новому типу.

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

Те же преобразования разрешены, MethodHandle#asType MethodHandle.asTypeа некоторые дополнительные преобразования также применяются, если эти преобразования завершаются ошибкой. Заданные типы <>em T0</>em,>< em T1</>em, одно из следующих преобразований применяется, если это возможно, прежде или вместо любых преобразований, выполненных asType: <ul<>li>, если <em>T0</>em и>< em T1/>em являются ссылками, и <em>T1</em> является типом интерфейса, то значение типа>< em T0</>em передается как <em>T1<</em> без приведения. (Это лечение интерфейсов следует использованию средства проверки байт-кода.) <li>Если <em>T0</>em является логическим и <em>T1/em> является другим примитивом, логическое значение преобразуется в байтовое значение, 1< для true, 0 для false. (Это лечение следует использованию средства проверки байт-кода.) <li>Если <em>T1</>em является логическим, и <em>T0/em> является другим примитивом, <em>T0<</em> преобразуется в байт через преобразование приведения Java (JLS 5.5), а низкий порядок результата проверяется, как будто.(x & 1) != 0 <Li>, если <em>T0</>em и <em>T1</em> являются примитивами, отличные от логического, то применяется преобразование приведения Java (JLS 5.5). (В частности, em>T0</>em преобразуется в <em>T1</em> путем <расширения и /или сужения.) <li>Если <em>T0</>em является ссылкой и <em>T1</em> примитивом, преобразование распаковки будет применено во время выполнения, возможно, за которым следует преобразование Java приведения (JLS 5.5) на примитивное значение, возможно, за преобразованием из байта в логический путем тестирования низкого порядка. <li>, если <em>T0</> em является ссылкой и <em>T1</em> примитивом, и если ссылка имеет значение NULL во время выполнения, будет введено нулевое значение. </ul>

Java документации по java.lang.invoke.MethodHandles.explicitCastArguments(java.lang.invoke.MethodHandle, java.lang.invoke.MethodType).

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

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