fal*_*ure 0 java recursion nested instanceof
我有一个Shape超类和一个NestedShape子类.该NestedShape亚类具有一个ArrayList(" ShapesList")的Shapes被嵌套在.我需要实现一个'包含'的方法NestedShape.给定一个Shape对象时,该方法应检查该形状是否存在于NestedShapes中ShapeList.我现在的实现非常简单:只需调用ArrayList .contains()方法即可ShapesList.
然而,"包含"方法我也需要实施有检查,对于任何NestedShape在ShapesList,那个形状的ShapeList同时不包含被搜索的形状.我这样做的最明显的方法是使用instanceof检查每个Shape在ShapeList是NestedShape.然后,我猜我会递归调用我的'contains'方法,如果它是一个NestedShape.但是,我不确定这是否是一个很好的方法 - 我听说使用instanceof是不赞成的(同样,我不确定我的使用递归的想法是否会起作用).
有谁能建议一个更好的方法来解决这个问题?
谢谢 :)
使用多态:
public class Shape {
public boolean contains(Shape shape) {
return false;
}
}
public class NestedShape extends Shape {
private List<Shape> subShapes = new ArrayList<Shape>();
@Override
public boolean contains(Shape shape) {
if (subShapes.contains(shape)) {
return true;
}
for (Shape subShape : subShapes) {
if (subShape.contains(shape)) {
return true;
}
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)