gpt4 book ai didi

java - 如何根据子类类型调用java方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:47:42 24 4
gpt4 key购买 nike

我正在尝试根据子类将对象分派(dispatch)到单独的方法。

例如,考虑这两个对象

class A extends I {}
class B extends I {}

和方法

void dispatch(I i) {}

dispatch()中,我想根据i的类型调用一个方法。因此,如果 i 实际上是类型 A,则将调用 handlerA(A a) 方法。如果它是类型 B,将调用 handlerB(B b),依此类推......我尝试使用方法重载,但我想它不会这样工作

实现此目标的最佳方法是什么?我想避免使用 if/else 语句 ...

提前致谢

编辑:我无法修改任何这些类。

最佳答案

使用 Visitor Pattern .

简而言之,有I声明一个 accept(Visitor<T> ...)方法,并有Visitor暴露onA(A ...) , onB(B ...)等方法。您对 I 的实现接口(interface)将在传入的 Visitor<T> 上调用适当的方法.

如果您只有 2 个具体类,它可能不值得(由于样板文件),但大约 3 或 4 个它开始值得 - 如果只是为了避免重复的 if-else 结构。

关于java - 如何根据子类类型调用java方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2169760/

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