Другой ответ предлагает использовать 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()); }