Tag: double dispatch

用Java进行多态调度

在下文中,我希望EventHandler以一种方式处理EventA,以另一种方式处理EventB,以及以另一种方式处理任何其他事件(EventC,EventD)。 EventReceiver仅接收对Event的引用并调用EventHandler.handle()。 当然,总是被调用的版本是EventHandler.handle(事件事件)。 不使用instanceOf,有没有办法多态调度(可能通过EventHandler或generics中的另一个方法)到适当的句柄方法? class EventA extends Event { } class EventB extends Event { } class EventC extends Event { } class EventD extends Event { } class EventHandler { void handle(EventA event) { System.out.println(“Handling EventA”); } void handle(EventB event) { System.out.println(“Handling EventB”); } void handle(Event event) { System.out.println(“Handling Event”); } } class EventReceiver […]

双重调度如何在访客模式中工作?

我正在调查与访问者模式相关的其他问题,但无法理解访问者模式中双重调度的实现。 请参阅访问者模式链接 双重调度如何在访客模式中工作?

Java方法重载+双重调度

任何人都可以详细解释在我的测试代码段中使用Child实例时调用重载方法print(Parent parent)的原因吗? 这里涉及Java中的任何虚拟方法或方法重载/解析的特征? 有没有直接引用Java Lang Spec? 哪个术语描述了这种行为? 非常感谢。 public class InheritancePlay { public static class Parent { public void doJob(Worker worker) { System.out.println(“this is ” + this.getClass().getName()); worker.print(this); } } public static class Child extends Parent { } public static class Worker { public void print(Parent parent) { System.out.println(“Why this method resolution happens?”); } public […]