JHo*_*763 1 java casting parent class-hierarchy
不知道如何标题这个...
所以,我有三个子类Event:WeightEvent,TimedEvent,RepEvent.通过任何方式,我得到一个孩子的对象.现在我想将该子事件发送到另一个对象中的方法,以便它可以使用该getSavedEvents()方法从中提取数据.该方法仅存在于子项中,因为提取数据特定于事件类型.
我开始了
public void setEvent(Event e) {
但是将我的子对象转换为Event(父)对象.
有没有办法解决这三种不同方法的缺点.一个孩子一个人?
public void setEvent(WeightEvent e) {
public void setEvent(TimedEvent e) {
public void setEvent(RepEvent e) {
谢谢你的建议.
-约翰
即使引用是强制转换的,它也不会更改实际对象的类型.当您传递引用时,它仍将是对子对象的实例的引用.通常这是足够的,如果需要,在父类型中使用适当的抽象方法.
但是,如果你想要的方式是特定类型的孩子,你能不能拿出一个适当的抽象,所有这些都可以统称实现,那么无论你必须使用instanceof你的内部setEvent代码,或者你就必须重载你的方法......因为你将不得不根据事件的确切类型调用不同的代码.
这有点模糊,因为除了几个方法签名之外我们看不到任何代码.如果您可以向我们提供有关您正在尝试做什么的更多详细信息,特别是在setEvent需要实现的目标以及子类中的不同方法方面,我们可以提供更多帮助.