如何避免在克隆哈希集时出现未经检查的强制转换警告?
我正在尝试制作一个名为myHash的HashSet的浅层点副本。截至目前,我有以下内容:
HashSet<Point> myNewHash = (HashSet<Point>) myHash.clone();
但是,此代码会给我一个未经检查的强制转换警告。有没有更好的方法来做到这一点?
我正在尝试制作一个名为myHash的HashSet的浅层点副本。截至目前,我有以下内容:
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()); }