我有三个班级:
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();
}
}
我想知道是否有更简单的方法来执行此操作
答案 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()。