Java:如何编写方法来接受子而不转换为父级?

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) {

谢谢你的建议.

-约翰

Jon*_*eet 7

即使引用是强制转换的,它也不会更改实际对象的类型.当您传递引用时,它仍将是对子对象的实例的引用.通常这是足够的,如果需要,在父类型中使用适当的抽象方法.

但是,如果你想要的方式是特定类型的孩子,你能不能拿出一个适当的抽象,所有这些都可以统称实现,那么无论你必须使用instanceof你的内部setEvent代码,或者你必须重载你的方法......因为你将不得不根据事件的确切类型调用不同的代码.

这有点模糊,因为除了几个方法签名之外我们看不到任何代码.如果您可以向我们提供有关您正在尝试做什么的更多详细信息,特别是在setEvent需要实现的目标以及子类中的不同方法方面,我们可以提供更多帮助.