una respuesta diferente sugiere el uso de new HashSet<Point>(myHash)
. Sin embargo, la intención de clone()
es obtener un nuevo objeto del mismo tipo. Si myHash
es una instancia de una subclase de HashSet
, cualquier comportamiento adicional agregado por subclases se perderá al usar new HashSet<Point>(myHash)
.
Una advertencia de lanzamiento desactivada es solo una advertencia. Hay muchas situaciones en las que el elenco es seguro, pero el compilador simplemente no es lo suficientemente inteligente como para determinar que es seguro. Puede, sin embargo, aislar la advertencia en un único método que puede ser anotado 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