我不确定这是否叫它,但这是问题所在:
我有一个带有三个子类的超类。
假设超类,子类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/