Collections.CheckedCollection(ICollection, Class) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
回傳指定集合的動態型別安全視圖。
[Android.Runtime.Register("checkedCollection", "(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;", "")]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public static System.Collections.ICollection CheckedCollection(System.Collections.ICollection c, Java.Lang.Class type);
[<Android.Runtime.Register("checkedCollection", "(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;", "")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
static member CheckedCollection : System.Collections.ICollection * Java.Lang.Class -> System.Collections.ICollection
參數
要回傳動態型別安全視圖的集合
- type
- Class
允許成立的元素 c 類型
傳回
對指定集合的動態型別安全視圖
- 屬性
備註
回傳指定集合的動態型別安全視圖。 任何嘗試插入錯誤類型的元素都會導致立即 ClassCastException出現 。 假設在產生動態型別安全檢視之前,集合中沒有任何錯誤類型元素,且所有後續存取皆透過該檢視進行, 則可保證 集合不會包含錯誤類型元素。
語言中的通用機制提供編譯時(靜態)型別檢查,但未檢查的 cast 也可能破解此機制。 通常這不會造成問題,因為編譯器會對所有未檢查的操作發出警告。 然而,有時僅靠靜態型別檢查並不足夠。 舉例來說,假設一個集合被傳遞給第三方函式庫,且函式庫程式碼必須避免因插入錯誤類型的元素而損壞該集合。
動態型別安全視圖的另一個用途是除錯。 假設一個程式失敗,出現 ClassCastException,表示一個錯誤型別的元素被放入參數化集合中。 不幸的是,例外可能在錯誤元件插入後的任何時間發生,因此通常無法提供問題的真實來源資訊。 如果問題可重現,可以透過暫時修改程式,將集合包裝成動態型別安全視圖,快速確定其來源。 例如,這份聲明:
{@code
Collection<String> c = new HashSet<>();
}
可暫時被以下字母取代:
{@code
Collection<String> c = Collections.checkedCollection(
new HashSet<>(), String.class);
}
再次執行程式會在插入錯誤類型元素時失敗,清楚指出問題來源。 問題解決後,修改後的宣告可回復原始狀態。
回傳的集合不會將 hashCode 和等值運算傳遞給後備集合,而是依賴 Object的 與equalshashCode方法。 這是為了在支持集合是集合或列表時,保留這些操作的契約。
若指定的集合可序列化,則回傳的集合將具備序列化能力。
由於 null 被視為任意參考類型的值,回傳的集合允許在支持集合插入空元素時插入。
已在1.5中新增。
Java 文件 java.util.Collections.checkedCollection(java.util.Collection<E>, java.lang.Class<E>)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。