铸造超类 Java
Casting a SuperClass Java
我有三个类:
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();
}
}
我想知道是否有更简单的方法来做到这一点
如果您只想克隆 Y
个对象,是的,使用 if
可能是最简单的方法,您应该使用 instanceof
:
for(X x:set){
if(x instanceof Y)){
Y n = (Y) x
n.clone();
}
}
使 class X 实现可克隆。然后按照建议使用 instanceof 在对象上调用 clone()。
我有三个类:
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();
}
}
我想知道是否有更简单的方法来做到这一点
如果您只想克隆 Y
个对象,是的,使用 if
可能是最简单的方法,您应该使用 instanceof
:
for(X x:set){
if(x instanceof Y)){
Y n = (Y) x
n.clone();
}
}
使 class X 实现可克隆。然后按照建议使用 instanceof 在对象上调用 clone()。