铸造一个超类Java



我有三个类:

public abstract class X{
   ....
}
public class Y extends X{
    clone(){}
      .....
}
public class Z extends X{
   clone(){}
   .....
}

我有一个Set<X> set,它包括Z或Y对象。如果我想克隆集合中的某个元素,我需要使用if吗?

for(X x:set){
   if(x.getClass().getSimpleName().equals("Y")){
       Y n = (Y) x
       n.clone();
   }
}

我想知道是否有更简单的方法来完成

如果您只想克隆Y对象,那么使用if可能是最简单的方法,您应该使用instanceof:

for(X x:set){
   if(x instanceof Y)){
       Y n = (Y) x
       n.clone();
   }
}

使类X实现可克隆。然后,只需按照建议使用instanceof对对象调用clone()。

最新更新