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> по возможности применяется одно из следующих преобразований до или вместо любых преобразований, выполненных : <asTypeul><li>Если <em>T0</em> и <em>T1</em> являются ссылками, а <em>T1</em> является типом интерфейса, то значение типа <em>T0</em> передается как <em>T1</em> без приведения.>< (Эта обработка интерфейсов соответствует использованию средства проверки байт-кода.) <Литий>Если <em>T0</em> является логическим, а <em>T1</em> — другим примитивом, логическое значение преобразуется в байтовое значение: 1 — true, 0 — false. (Эта обработка соответствует использованию средства проверки байт-кода.) <Литий>Если <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).

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

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