运行时子类的java超类方法和子类方法
我在主类中使用了超类作为参数的方法
public class MainClass() {
...
public void myMethod(MyClass class)
...
在运行时,这个对象可以是它的任何子类,它应该根据同一个主类中的子类调用不同的方法
public class MainClass() {
...
public void mySubMethod(MySubClass1 class)
public void mySubMethod(MuySubClass2 class)
...
当然,我可以将instanceOf或静态工厂模式与Enum一起使用,但仍然是(伪代码)
public void myMethod(MyClass class) {
if (instanceOf == MySubclass1) mySubMethod((MySubClass1)subClass1Object)
if (instanceOf == MySubclass2) mySubMethod((MySubClass2)subClass2Object)
}
在运行时,jvm知道对象到底是哪个子类,并且知道每个子方法参数应该是哪个子类。我无法控制MyClass、MySubclass1和MySubclass2
但有什么优雅的方法可以做到这一点吗
# 1 楼答案
解决这个问题的一个办法是在工厂里使用手持设备
您可以使这个类中的方法成为静态的,或者使用Singleton模式使HandlerArgistry在任何地方都可以访问 }
# 2 楼答案
通过将这些方法移动到不同的目标子类本身,可以使用“双重分派”