簡體   English   中英

克隆HashSet時如何避免未經檢查的強制轉換警告?

[英]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()的目的是獲取相同類型的新對象。 如果myHashHashSet的子類的實例,則子類化添加的任何其他行為都將通過使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM