如何在具有2个父类型的子类型的ArrayList中检查变量属于哪个子类?

时间:2016-04-17 00:33:00

标签: java arraylist

很抱歉,如果这个问题令人困惑。这是一个例子:

有一个ArrayList包含“Shape”类型的数据。

“Circle”和“Triangle”都是“Shape”的孩子。 Circle有方法calculateRadius()。三角形不会也不会。

我想查看ArrayList中的所有形状并检查半径:

for(Shape s : shapeList)
{
    System.out.println(s.calculateRadius);
}

我知道这不起作用,因为形状和三角形都没有这种方法。有没有办法检查列表中的形状是圆形还是三角形,然后在形状为圆形时计算半径?

如何定义列表并添加数据:

ArrayList<shape> shapeList = new ArrayList<shape>;

...

Circle c = new Circle(a, b, c, radius);
Triangle t = new Triangle(a, b, c, type);
shapeList.add(c);
shapeList.add(t);

1 个答案:

答案 0 :(得分:0)

为了简单起见,只需在使用前键入check;

for (Shape s : shapeList)
{
    if (s instanceof Circle)
    {
        System.out.println(((Circle) s).calculateRadius);
    }
}