MethodHandles.ExplicitCastArguments(MethodHandle, MethodType) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
生成一个方法句柄,该方法通过成对参数和返回类型转换将给定方法句柄的类型适应新类型。
[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> 传递而不<强制转换。 (这种接口处理遵循字节码验证程序的使用。 <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>
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。