una risposta diversa suggerisce di utilizzare new HashSet<Point>(myHash)
. Tuttavia, l'intento di clone()
è di ottenere un nuovo oggetto dello stesso tipo. Se è un'istanza di una sottoclasse di HashSet
, qualsiasi comportamento aggiuntivo aggiunto dalla sottoclasse verrà perso utilizzando new HashSet<Point>(myHash)
.
Un avviso di trasmissione non controllato è solo un avviso. Ci sono molte situazioni in cui il cast è sicuro, ma il compilatore non è abbastanza intelligente da determinare che è sicuro. È possibile, tuttavia, isolare l'avvertimento in un unico metodo che può essere annotato con @SuppressWarnings("unchecked")
:
@SuppressWarnings("unchecked")
static <T implements Cloneable> clone(T o) { return (T)(o.clone()); }
http://www.velocityreviews.com/forums/t153068-clones-generics-and-unchecked-cast-warnings .html – Borealid