小编FL0*_*0Nn的帖子

如何在JAVA中使用带有重载的Double Dispatch?

我正在尝试在JAVA中创建一个双重调度以使用重载方法。

public abstract class ComposantOrdi {
    protected void equiv(ComposantOrdi c){
        Equivalence.equiv(this, c);
    }
}

public class Montage extends ComposantOrdi{
    protected void equiv(Montage montage){
        Equivalence.equiv(this, montage);
    }
}

public class Equivalence {
    public static void equiv(Montage m, ComposantOrdi c){
        System.out.println("Montage - ComposantOrdi");
    }

    public static void equiv(Montage m, Montage c){
        System.out.println("Montage - Montage");
    }

    public static void equiv(ComposantOrdi m, ComposantOrdi c){
        System.out.println("ComposantOrdi - ComposantOrdi");
    }
}
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我创建两个对象

Montage m2 = new Montage();
ComposantOrdi m3 = new Montage();

m3.equiv(m2);
m3.equiv(m3);
m3.equiv((Montage)m3);
Run Code Online (Sandbox Code Playgroud)

结果是: …

java double design-patterns concept dispatch

1
推荐指数
1
解决办法
569
查看次数

标签 统计

concept ×1

design-patterns ×1

dispatch ×1

double ×1

java ×1