gpt4 book ai didi

java - Java 中的动态转换

转载 作者:行者123 更新时间:2023-12-02 07:38:07 25 4
gpt4 key购买 nike

我不确定这是否是它的名字,但问题是:

我有一个包含三个子类的父类(super class)。假设父类(super class)、子类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
}

有没有办法让我从父类(super class)调用重载方法,同时在运行时将方法参数动态转换为对象类型?

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 ...

然后您可以在父类(super class)中调用callExampleMethod,它将正确委托(delegate)。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com