bra*_*ter 4 java polymorphism listener
看来Java无法根据参数的运行时类型选择最合适的方法实现,如此处所述.重述这个例子:
class Superclass {}
class Subclass extends Superclass {}
class Test {
public void aMethod(Superclass s) {...}
public void aMethod(Subclass s) {...}
}
Run Code Online (Sandbox Code Playgroud)
执行Test类的哪种方法取决于引用的类型,而不是实例的类型.同样,基于链接的示例:
Test aTest = new Test();
Superclass aSuper = new Subclass();
test.aMethod(aSuper);
Run Code Online (Sandbox Code Playgroud)
这是aMethod(Superclass s)执行,而不是aMethod(Subclass s).
我试图在侦听器模式上创建一个变体,其中侦听器通过接口插入,并且侦听器具有为接口的子类定义的方法.
作为我的意思的一个简单例子,说我正在构建一个可以插入功能的闹钟.
我想到的上面的实现看起来像一个接口Event,一个子类WakeUpEvent,以及一个EventListener需要实现的接口handle(Event evt).
我希望创建一个实现no-op的类handle(Event evt),handle(WakeUpEvent evt)如果监听器想要处理那种类型的事件.
当然,这种方法不会按原样运行instanceof- 显而易见的解决方案是运行时检查 - yuk.
我可以使用任何模式或方法来获得我想要的行为吗?