[英]How to avoid getting unchecked cast warning when retrieving Serializable object from Bundle
[英]How to avoid unchecked cast warning when cloning a HashSet?
我正在嘗試制作一個名為myHash的HashSet of Points的淺表副本。 截至目前,我有以下內容:
HashSet<Point> myNewHash = (HashSet<Point>) myHash.clone();
但是,這段代碼給了我一個未經檢查的強制警告。 有一個更好的方法嗎?
你可以試試這個:
HashSet<Point> myNewHash = new HashSet<Point>(myHash);
一個不同的答案建議使用new HashSet<Point>(myHash)
。 但是, clone()
的目的是獲取相同類型的新對象。 如果myHash
是HashSet
的子類的實例,則子類化添加的任何其他行為都將通過使用new HashSet<Point>(myHash)
而丟失。
未經檢查的投射警告只是一個警告。 在很多情況下,強制轉換是安全的,但編譯器不夠聰明,無法確定它是否安全。 但是,您可以將警告隔離到可以使用@SuppressWarnings("unchecked")
注釋的單個方法中:
@SuppressWarnings("unchecked")
static <T implements Cloneable> clone(T o) { return (T)(o.clone()); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.