MethodHandles 类

定义

此类仅包含对或返回方法句柄进行操作的静态方法。

[Android.Runtime.Register("java/lang/invoke/MethodHandles", ApiSince=26, DoNotGenerateAcw=true)]
public class MethodHandles : Java.Lang.Object
[<Android.Runtime.Register("java/lang/invoke/MethodHandles", ApiSince=26, DoNotGenerateAcw=true)>]
type MethodHandles = class
    inherit Object
继承
MethodHandles
属性

注解

此类仅包含对或返回方法句柄进行操作的静态方法。 它们分为几个类别: <ul><li>Lookup 方法,可帮助为方法和字段创建方法句柄。 <li>Combinator 方法,该方法将预先存在的方法句柄合并或转换为新方法。 <li>其他工厂方法,用于创建模拟其他常见 JVM 操作或控制流模式的方法句柄。 </ul>

已在 1.7 中添加。

适用于 . 的 java.lang.invoke.MethodHandlesJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

名称 说明
MethodHandles(IntPtr, JniHandleOwnership)

此类仅包含对或返回方法句柄进行操作的静态方法。

属性

名称 说明
Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
JniPeerMembers

此类仅包含对或返回方法句柄进行操作的静态方法。

PeerReference

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
ThresholdClass

此类仅包含对或返回方法句柄进行操作的静态方法。

ThresholdType

此类仅包含对或返回方法句柄进行操作的静态方法。

方法

名称 说明
ArrayConstructor(Class)

生成构造所需类型的数组的方法句柄,就像字节代码一 anewarray 样。

ArrayElementGetter(Class)

生成一个方法句柄,以授予对数组元素的读取访问权限。

ArrayElementSetter(Class)

生成一个方法句柄,以授予对数组元素的写入访问权限。

ArrayElementVarHandle(Class)

生成一个 VarHandle,授予对类型 arrayClass数组的元素的访问权限。

ArrayLength(Class)

生成返回数组长度的方法句柄,就像字节码一 arraylength 样。

ByteArrayViewVarHandle(Class, ByteOrder)

生成一个 VarHandle,它允许访问查看的数组的 byte[] 元素,就像它是不同的基元数组类型,例如 int[]long[]

ByteBufferViewVarHandle(Class, ByteOrder)

生成一个 VarHandle,它授予对视图元素 ByteBuffer 的访问权限,就像它是不同基元组件类型的 byte元素数组,例如 int[]long[]

CatchException(MethodHandle, Class, MethodHandle)

通过在异常处理程序中运行它,使方法句柄适应目标方法句柄。

Clone()

创建并返回此对象的副本。

(继承自 Object)
CollectArguments(MethodHandle, Int32, MethodHandle)

通过使用筛选器(另一个方法句柄)预处理其参数的子序列来调整目标方法句柄。

Constant(Class, Object)

生成请求的返回类型的方法句柄,每次调用给定的常量值时都会返回给定的常量值。

CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle)

构造一个循环,该循环计数超过一系列数字。

CountedLoop(MethodHandle, MethodHandle, MethodHandle)

构造运行给定迭代数的循环。

Dispose()

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
Dispose(Boolean)

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
DoWhileLoop(MethodHandle, MethodHandle, MethodHandle)

do-while从初始值设定项、正文和谓词构造循环。

DropArguments(MethodHandle, Int32, Class[])

生成一个方法句柄,该方法将在调用其他一些指定的 目标 方法句柄之前放弃一些虚拟参数。

DropArguments(MethodHandle, Int32, IList<Class>)

生成一个方法句柄,该方法将在调用其他一些指定的 目标 方法句柄之前放弃某些占位符参数。

DropArgumentsToMatch(MethodHandle, Int32, IList<Class>, Int32)

调整目标方法句柄以匹配给定的参数类型列表。

DropReturn(MethodHandle)

删除目标句柄的返回值(如果有)。

Empty(MethodType)

生成请求类型的方法句柄,该句柄忽略任何参数、不执行任何操作,并返回适当的默认值,具体取决于返回类型。

Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
ExactInvoker(MethodType)

生成特殊的 <em>invoker 方法句柄/em>,它可用于调用给定类型的任何方法句柄<,就像按此方式一MethodHandle#invokeExact invokeExact样。

ExplicitCastArguments(MethodHandle, MethodType)

生成一个方法句柄,该方法通过成对参数和返回类型转换将给定方法句柄的类型适应新类型。

FilterArguments(MethodHandle, Int32, MethodHandle[])

通过预处理一个或多个参数(每个参数都有自己的一元筛选函数)来调整目标方法句柄,然后使用其相应筛选器函数的结果替换的每个预处理参数调用目标。

FilterReturnValue(MethodHandle, MethodHandle)

使用筛选器(另一个方法句柄)通过后期处理其返回值(如果有)来调整目标方法句柄。

FoldArguments(MethodHandle, Int32, MethodHandle)

通过预处理某些参数(从给定位置开始)来调整目标方法句柄,然后使用预处理的结果调用目标,并将其插入到折叠参数之前的原始参数序列中。

FoldArguments(MethodHandle, MethodHandle)

通过预处理某些参数来调整目标方法句柄,然后使用预处理的结果调用目标,并将其插入到原始参数序列中。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GuardWithTest(MethodHandle, MethodHandle, MethodHandle)

通过用测试保护目标方法句柄(布尔值方法句柄)使方法句柄适应目标方法句柄。

Identity(Class)

生成一个方法句柄,该方法在调用时返回其唯一参数。

InsertArguments(MethodHandle, Int32, Object[])

在方法句柄调用之前,提供一个或多个 <em 绑定参数</em> 的目标>方法句柄。

InvokeLookup()

返回一个 Lookup lookup object 具有完整功能,用于模拟调用方的所有支持的字节码行为。

Invoker(MethodType)

生成特殊的 <em>invoker 方法句柄/em>,该句柄可用于调用与给定类型兼容的任何方法句柄<,就像按此方式一MethodHandle#invoke invoke样。

IteratedLoop(MethodHandle, MethodHandle, MethodHandle)

构造一个循环,该循环的范围超过由一个 Iterator<T>值生成的值。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Loop(MethodHandle[][])

构造一个表示循环的方法句柄,其中包含多个循环变量,这些变量在每次迭代时更新和检查。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
PermuteArguments(MethodHandle, MethodType, Int32[])

通过重新排序参数,生成一个方法句柄,该方法将给定方法句柄的调用序列改编为新类型。

PrivateLookupIn(Class, MethodHandles+Lookup)

此类仅包含对或返回方法句柄进行操作的静态方法。

PublicLookup()

返回最信任的一个 Lookup lookup object

ReflectAs(Class, MethodHandle)

执行直接方法句柄的未选中的“破解”。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SpreadInvoker(MethodType, Int32)

生成一个方法句柄,该方法句柄将调用给定 type的任何方法句柄,给定数量的尾随参数被单个尾随 Object[] 数组替换。

TableSwitch(MethodHandle, MethodHandle[])

此类仅包含对或返回方法句柄进行操作的静态方法。

ThrowException(Class, Class)

生成一个方法句柄,该方法将引发给定 exType的异常。

ToArray<T>()

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
TryFinally(MethodHandle, MethodHandle)

创建一个方法句柄,该句柄通过将方法句柄包装在块中try-finally来调整target方法句柄。

UnregisterFromRuntime()

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
VarHandleExactInvoker(VarHandle+AccessMode, MethodType)

此类仅包含对或返回方法句柄进行操作的静态方法。

VarHandleInvoker(VarHandle+AccessMode, MethodType)

此类仅包含对或返回方法句柄进行操作的静态方法。

Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
WhileLoop(MethodHandle, MethodHandle, MethodHandle)

while从初始值设定项、正文和谓词构造循环。

Zero(Class)

生成所请求的返回类型的常量方法句柄,每次调用该类型时都会返回该类型的默认值。

显式接口实现

名称 说明
IJavaPeerable.Disposed()

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
IJavaPeerable.Finalized()

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

此类仅包含对或返回方法句柄进行操作的静态方法。

(继承自 Object)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

此类仅包含对或返回方法句柄进行操作的静态方法。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于