铸造SuperClass Java

时间:2016-04-29 09:16:44

标签: java casting clone subclass

我有三个班级:

public abstract class X{
   ....
}

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

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

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

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

我想知道是否有更简单的方法来执行此操作

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

使类X实现Cloneable。然后根据建议使用 instanceof 来调用对象上的clone()。