我不确定这是否叫它,但这是问题所在:

我有一个带有三个子类的超类。
假设超类,子类1,子类2,子类3

我有另一个带有以下重载方法的类:

public void exampleMethod (Subclass1 object1){
//Method to be called if the object is of subclass 1
}

public void exampleMethod (Subclass2 object2){
//Method to be called if the object is of subclass 2
}

public void exampleMethod (Subclass3 object3){
//Method to be called if the object is of subclass 3
}


在运行时将方法参数动态转换为对象类型时,有没有办法从超类调用重载方法?

anotherClass.exampleMethod(this);

最佳答案

if (this instanceof Subclass1) {
    anotherClass.exampleMethod((Subclass1)this);
} else if (this instanceof Subclass2) {
    anotherClass.exampleMethod((Subclass2)this);
}
...


你是这个意思吗?

可能做得更好

abstract class Superclass {
    abstract void callExampleMethod(AnotherClass anotherClass);
}

class Subclass1 extends Superclass {
    void callExampleMethod(AnotherClass anotherClass) {
        anotherClass.exampleMethod(this);
    }
}
... same for other subclasses ...


然后,您可以在超类中调用callExampleMethod,它将正确地委派。

关于java - 用Java动态转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11924617/

10-11 20:20