MethodType 类

定义

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

[Android.Runtime.Register("java/lang/invoke/MethodType", ApiSince=26, DoNotGenerateAcw=true)]
public sealed class MethodType : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.Invoke.ITypeDescriptor.IOfMethod
[<Android.Runtime.Register("java/lang/invoke/MethodType", ApiSince=26, DoNotGenerateAcw=true)>]
type MethodType = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ITypeDescriptor.IOfMethod
    interface ITypeDescriptor
继承
MethodType
属性
实现

注解

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。 方法类型必须在方法句柄及其所有调用方之间正确匹配,JVM 的操作必须在调用 MethodHandle#invokeExact MethodHandle.invokeExactMethodHandle#invoke MethodHandle.invoke执行 invokedynamic 指令期间强制执行此匹配。

结构是返回类型,附带任意数量的参数类型。 类型(基元 void和引用)由 Class 对象表示。 (为了方便解释,我们把它视为 void 一种类型。事实上,它表示缺少返回类型。

所有实例都是不可变的 MethodType 。 如果两个实例相等,则两个实例是完全可互换的。 相等取决于返回和参数类型的成对对应关系,以及其他任何内容。

此类型只能由工厂方法创建。 所有工厂方法都可以缓存值,但无法保证缓存。 某些工厂方法是静态的,而另一些是虚拟方法,它们通过更改所选参数来修改前导方法类型。

在两个版本中系统地呈现对参数类型的组进行操作的工厂方法,以便Java数组和Java列表都可用于处理参数类型的组。 查询方法 parameterArrayparameterList 并提供数组和列表之间的选择。

MethodType 对象有时派生自字节码指令,例如 invokedynamic,特别是与类文件常量池中的指令关联的类型描述符字符串。

与类和字符串一样,方法类型也可以直接在类文件的常量池中表示为常量。 方法类型可以通过引用合适的CONSTANT_MethodType常量池条目的指令加载ldc。 该条目引用 CONSTANT_Utf8 描述符字符串的拼写。 (有关方法类型常量的完整详细信息,请参阅 Java 虚拟机规范的 4.4.8 和 5.4.3.5 部分。

当 JVM 从描述符字符串具体化时 MethodType ,必须可访问描述符中命名的所有类,并且将加载这些类。 (但类不需要初始化,与 .一样 CONSTANT_Class)首次派生对象之前 MethodType ,可能随时发生此加载。

Java文档java.lang.invoke.MethodType

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

属性

名称 说明
Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
HasPrimitives

报告此类型是否包含基元参数或返回值。

HasWrappers

报告此类型是否包含包装参数或返回值。

JniIdentityHashCode

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
JniPeerMembers

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

PeerReference

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)
ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)

方法

名称 说明
AppendParameterTypes(Class[])

查找或创建具有其他参数类型的方法类型。

AppendParameterTypes(IList<Class>)

查找或创建具有其他参数类型的方法类型。

ChangeParameterType(Int32, Class)

查找或创建具有单个不同参数类型的方法类型。

ChangeReturnType(Class)

查找或创建具有不同返回类型的方法类型。

Clone()

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

(继承自 Object)
DescriptorString()

返回此方法类型的描述符字符串。

Dispose()

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
Dispose(Boolean)

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
DropParameterTypes(Int32, Int32)

查找或创建一个方法类型,其中省略了一些参数类型。

Equals(Object)

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

(继承自 Object)
Erase()

清除所有引用类型。Object

FromMethodDescriptorString(String, ClassLoader)

查找或创建方法类型的实例,给定其字节代码描述符的拼写。

Generic()

将所有类型(引用和基元)转换为 Object

GenericMethodType(Int32, Boolean)

查找或创建其组件具有 Object 可选尾随 Object[] 数组的方法类型。

GenericMethodType(Int32)

查找或创建其组件全部的方法 Object类型。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
InsertParameterTypes(Int32, Class[])

查找或创建具有其他参数类型的方法类型。

InsertParameterTypes(Int32, IList<Class>)

查找或创建具有其他参数类型的方法类型。

InvokeMethodType(Class, Class, Class[])

查找或创建具有给定组件的方法类型。

InvokeMethodType(Class, Class)

查找或创建具有给定组件的方法类型。

InvokeMethodType(Class, Class[])

查找或创建给定方法类型的实例。

InvokeMethodType(Class, IList<Class>)

查找或创建具有给定组件的方法类型。

InvokeMethodType(Class, MethodType)

查找或创建具有给定组件的方法类型。

InvokeMethodType(Class)

查找或创建具有给定组件的方法类型。

JavaFinalize()

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

(继承自 Object)
LastParameterType()

返回此方法类型的最后一个参数类型。

Notify()

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

(继承自 Object)
NotifyAll()

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

(继承自 Object)
ParameterArray()

将参数类型呈现为数组(便捷方法)。

ParameterCount()

返回此方法类型中的参数类型数。

ParameterList()

将参数类型呈现为列表(便捷方法)。

ParameterType(Int32)

在此方法类型中返回指定索引处的参数类型。

ReturnType()

返回此方法类型的返回类型。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
ToArray<T>()

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
ToMethodDescriptorString()

生成方法类型的字节代码描述符表示形式。

ToString()

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

(继承自 Object)
UnregisterFromRuntime()

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
Unwrap()

将所有包装器类型转换为其相应的基元类型。

Wait()

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

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

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

(继承自 Object)
Wait(Int64)

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

(继承自 Object)
Wrap()

将所有基元类型转换为其相应的包装器类型。

显式接口实现

名称 说明
IJavaPeerable.Disposed()

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
IJavaPeerable.Finalized()

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

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

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

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

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

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

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

(继承自 Object)
ITypeDescriptor+IOfMethod.ChangeParameterType(Int32, Object)

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

ITypeDescriptor+IOfMethod.ChangeReturnType(Object)

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

ITypeDescriptor+IOfMethod.DropParameterTypes(Int32, Int32)

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

ITypeDescriptor+IOfMethod.InsertParameterTypes(Int32, Object[])

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

ITypeDescriptor+IOfMethod.ParameterArray()

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

ITypeDescriptor+IOfMethod.ReturnType()

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

方法类型表示方法句柄接受和返回的参数和返回类型,或由方法句柄调用方传递和预期的参数和返回类型。

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

适用于