ISafeVarargs 接口

定义

程序员断言,注释的方法或构造函数的正文不会对其 varargs 参数执行潜在的不安全操作。

[Android.Runtime.Register("java/lang/SafeVarargs", "", "Java.Lang.ISafeVarargsInvoker")]
public interface ISafeVarargs : IDisposable, Java.Interop.IJavaPeerable, Java.Lang.Annotation.IAnnotation
[<Android.Runtime.Register("java/lang/SafeVarargs", "", "Java.Lang.ISafeVarargsInvoker")>]
type ISafeVarargs = interface
    interface IAnnotation
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
属性
实现

注解

程序员断言,注释的方法或构造函数的正文不会对其 varargs 参数执行潜在的不安全操作。 将此批注应用于方法或构造函数会禁止显示有关 不可重设 变量 arity (vararg) 类型的未选中警告,并禁止在调用站点上对参数化数组创建发出未检查的警告。

除了其 Target @Target 元注释施加的使用限制外,编译器还需要对此批注类型实施其他使用限制;如果方法或构造函数声明使用 @SafeVarargs 批注进行批注,则为编译时错误,并且: <ul><li> 声明是固定的 arity 方法或构造函数

<li> 声明是一种变量 arity 方法,既不是,也不是finalstaticprivate

</ul>

当此批注类型应用于方法或构造函数声明时,鼓励编译器发出警告,其中:

<ul>

<li> 变量 arity 参数具有可重新调整的元素类型,其中包括基元类型, Object以及 String。 (未选中的警告此批注类型禁止对可重新调整的元素类型不发生。

<li> 方法或构造函数声明的正文执行潜在的不安全操作,例如,向变量 arity 参数数组的元素赋值,该元素生成未选中的警告。 某些不安全的操作不会触发未选中的警告。 例如,别名

<blockquote>

&#64;SafeVarargs // Not actually safe!
            static void m(List&lt;String&gt;... stringLists) {
              Object[] array = stringLists;
              List&lt;Integer&gt; tmpList = Arrays.asList(42);
              array[0] = tmpList; // Semantically invalid, but compiles without warnings
              String s = stringLists[0].get(0); // Oh no, ClassCastException at runtime!
            }

</blockquote>

导致 ClassCastException 在运行时。

平台的未来版本可能要求编译器错误进行此类不安全的操作。

</ul>

已在 1.7 中添加。

适用于 . 的 java.lang.SafeVarargsJava 文档

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

属性

名称 说明
Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

返回JniObjectReference包装的Java对象实例。

(继承自 IJavaPeerable)

方法

名称 说明
AnnotationType()

返回此批注的批注接口。

(继承自 IAnnotation)
Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Equals(Object)

如果指定的对象表示逻辑上等效于此批注的批注,则返回 true。

(继承自 IAnnotation)
Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
GetHashCode()

返回此批注的哈希代码。

(继承自 IAnnotation)
SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

程序员断言,注释的方法或构造函数的正文不会对其 varargs 参数执行潜在的不安全操作。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
ToString()

返回此批注的字符串表示形式。

(继承自 IAnnotation)
UnregisterFromRuntime()

取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

程序员断言,注释的方法或构造函数的正文不会对其 varargs 参数执行潜在的不安全操作。

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

适用于