有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在克隆哈希集时避免未经检查的强制转换警告?

我正在尝试创建一个名为myHash的哈希点集的浅层副本。截至目前,我有以下信息:

HashSet<Point> myNewHash = (HashSet<Point>) myHash.clone();

然而,这段代码给了我一个未经检查的强制转换警告。有更好的方法吗


共 (2) 个答案

  1. # 1 楼答案

    你可以试试这个:

    HashSet<Point> myNewHash = new HashSet<Point>(myHash);
    
  2. # 2 楼答案

    另一个不同的答案建议使用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()); }