ISafeVarargs 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
程序员断言,注释的方法或构造函数的正文不会对其 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>
@SafeVarargs // Not actually safe!
static void m(List<String>... stringLists) {
Object[] array = stringLists;
List<Integer> 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 |
返回包装实例的值 |
| JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
| JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
| PeerReference |
返回JniObjectReference包装的Java对象实例。 (继承自 IJavaPeerable) |
方法
| 名称 | 说明 |
|---|---|
| AnnotationType() |
返回此批注的批注接口。 (继承自 IAnnotation) |
| Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
| Equals(Object) |
如果指定的对象表示逻辑上等效于此批注的批注,则返回 true。 (继承自 IAnnotation) |
| Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
| GetHashCode() |
返回此批注的哈希代码。 (继承自 IAnnotation) |
| SetJniIdentityHashCode(Int32) |
设置由 |
| SetJniManagedPeerState(JniManagedPeerStates) |
程序员断言,注释的方法或构造函数的正文不会对其 varargs 参数执行潜在的不安全操作。 (继承自 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
设置由 |
| ToString() |
返回此批注的字符串表示形式。 (继承自 IAnnotation) |
| UnregisterFromRuntime() |
取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
程序员断言,注释的方法或构造函数的正文不会对其 varargs 参数执行潜在的不安全操作。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |