gpt4 book ai didi

java - 如果我只能获取某个类的对象,但我的方法只能在子类上工作,如何避免使用instanceof

转载 作者:行者123 更新时间:2023-12-01 18:04:15 25 4
gpt4 key购买 nike

具体示例:我有一个 Track 类和一个扩展 Track 类的 Track-switch 类。

类轨道{}

class Switch extends Track {
boolean state;

void changeState() {
state = !state;
}
}

我有一个将 ID 映射到轨道的 Railway 类。

class Railway {
Map<Integer, Track> IDMap = new Hashmap<>();

void changeSwitch(Integer id) {
Track temp = IDMap.get(id);

if (temp instanceof Switch) {
((Switch) temp).changeState();
}
}
}

如何避免在我的changeSwitch方法中使用instanceof和向下转型?我听说过“告诉,不要问”的规则,但是在 Track 中编写一个只抛出异常的方法感觉非常错误。 (我故意省略了修饰符以简化)

最佳答案

好吧,您不必在 Track 中创建引发异常的方法。您可以创建不执行任何操作的方法。然后你可以为IDMap中的每个Track调用changeState

关于java - 如果我只能获取某个类的对象,但我的方法只能在子类上工作,如何避免使用instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60582699/

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