混淆了Java中的单个分派与多个分派吗
我读过 只是对于多个分派(不是Java)和单个分派(Java)的概念仍然有点困惑 让我们用这个例子:混淆了Java中的单个分派与多个分派吗,java,dispatch,multiple-dispatch,single-dispatch,Java,Dispatch,Multiple Dispatch,Single Dispatch,我读过 只是对于多个分派(不是Java)和单个分派(Java)的概念仍然有点困惑 让我们用这个例子: class A { m(A a) { System.out.println(“In A: “ + a.getClass()); } } class B extends A { m(A a) { System.out.println(“In B.m(A): “ + a.getClass()); } m(B a) {
class A {
m(A a) {
System.out.println(“In A: “ + a.getClass());
}
}
class B extends A {
m(A a) {
System.out.println(“In B.m(A): “ + a.getClass());
}
m(B a) {
System.out.println(“In B.m(B): “ + a.getClass());
}
}
A a = new A();
A b = new B();
B c = new B();
a.m(a); // Java will call A.m(A); double-dispatch would call A.m(A)
b.m(b); // Java will call B.m(A); double-dispatch would call B.m(B)
b.m(c); // Java will call B.m(B); double-dispatch would call B.m(B)
•多个调度查看以下内容是否正确:
感谢您提供的任何见解从我阅读的您链接的帖子和它链接的维基百科文章中,答案是#2。这是您在使用它之前不会真正注意到其有用性的东西之一。如果您所看到的只是单个分派,那么很难想象有多个分派。如果您真的对绘制比较感兴趣,可以尝试使用CommonLisp或使用multidispatch的方法。