【发布时间】:2015-02-19 21:54:40
【问题描述】:
我有一个这样定义的类:
class Car {
}
还有许多其他类似的定义:
class Audi extends Car {
}
class Seat extends Car {
}
class Mercedes extends Car {
}
class Opel extends Car {
}
...
我有一种情况,我收到了所有这些汽车的列表,其定义如下:
List<Car> cars = new ArrayList<Car>();
在该列表中有许多不同的汽车,那么我如何找出哪一辆是奥迪,哪一辆是西雅特等?
我尝试对我知道它们是奥迪类型的汽车执行此操作:
Audi audi = (Audi) cars.get(0);
这会抛出ClassCastException。这种情况如何处理?
【问题讨论】:
-
你可以使用instanceof,但这颠覆了OOP原则。你想做什么?
-
“我怎么知道哪个是奥迪,哪个是西雅特”你为什么还要这样做?你的
Car班级不是已经有你需要的所有方法了吗? -
@AdrianLeonhard,我正在尝试从汽车列表中获取特定汽车的数据。我正在从另一个地方收到该列表,需要对其进行处理。
-
@Pshemo,没有。每辆特定的汽车都有一些额外的变量,包括它的 getter 和 setter。
-
好的,在这种情况下,
instanceof是您正在寻找的运营商。但我仍然对Seat可能有哪些Audi或其他汽车不应该有的数据感兴趣。
标签: java