語言

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 參數執行潛在不安全的操作。 將此註解套用到方法或建構子上,會抑制關於 不可可再約 變數元數(vararg)類型未檢查的警告,並抑制呼叫站點參數化陣列建立的未檢查警告。

除了元註解所施加 Target @Target 的使用限制外,編譯器還需對此註解類型實施額外的使用限制;若方法或建構子宣告被 @SafeVarargs 註解,且以下情況如下: <ul><li> 宣告為固定元數方法或建構子,則為編譯時錯誤

<LI> 宣告是一種可變元數方法,既非 也static非 ,也finalprivate

</ul>

當此註解類型套用於方法或建構子宣告時,編譯器被鼓勵發出警告:

<UL>

<li> 變數元數參數有一個可約元素類型,包含原始類型、 ObjectString。 (此註解類型所抑制的未檢查警告,已不會在可可實體元素類型中發生。)

<li> 方法或建構子宣告的主體執行可能不安全的操作,例如對變數元數參數陣列中的元素進行指派,產生未檢查的警告。 有些不安全操作不會觸發未檢查的警告。 例如,在 中的鋸齒

<引用>

&#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!
            }

</區塊引用>

在執行時會導致A ClassCastException

未來版本的平台可能會強制編譯器錯誤處理此類不安全操作。

</ul>

在 1.7 版本中加入。

Java 文件 java.lang.SafeVarargs

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

屬性

名稱 Description
Handle

取得底層 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

程式設計師斷言註解方法或建構子的主體不會對其 varargs 參數執行潛在不安全的操作。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)

方法

名稱 Description
AnnotationType()

回傳該註解的註解介面。

(繼承來源 IAnnotation)
Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
Equals(Object)

若指定物件代表與此標註邏輯等價,則返回真。

(繼承來源 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)

擴充方法

名稱 Description
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 端是否有效。

適用於