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> без приведения.>< (Эта обработка интерфейсов соответствует использованию средства проверки байт-кода.) <Литий>Если <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>
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.