gpt4 book ai didi

java - 从 HashMap 中检索后如何指定该对象属于哪个子类?

转载 作者:行者123 更新时间:2023-12-01 16:04:29 26 4
gpt4 key购买 nike

我有一个名为 Course 的父类,以及两个子类 PostgradCourse 和 UndergradCourse。我有一个 hashmap HashMap 类(class);我将所有 postgradCourse 和 undergradCourse 对象存储在 HashMap 中。

我想使用该键从 HashMap 中检索 undergradCourse 对象。类(class) course = course.get(courseCode);然后我想调用UndergradCourse类中的一个方法,setUnits()方法course.setUnits();但编译器说找不到符号方法 setUnit()

我很确定问题是编译器正在 Course 类而不是 UndergradCourse 类中寻找方法 setUnit()

我这样做了,但它不起作用本科类(class) course = course.get(courseCode);导致类型不兼容

那么我如何从 HashMap 中检索 undergradCourse 对象作为 undergradCourse 对象而不是类(class)对象?这样我就可以调用子类中的方法

提前致谢

最佳答案

map 当然存储两种不同类型的路线。当您从 map 中检索类(class)时,您不知道检索到的是哪种类型的类(class)。

要解决此问题,如果您使用 C++ 进行编程,则至少有三种替代方法可以处理此问题:

  1. 有两张不同的 map :一张是本科类(class) map ,另一张是研究生类(class) map (而不是一张基础类(class) map )。
  2. 当您从单个 map 中获取基础路线时,将对象(使用 static_cast 或dynamic_cast)转换为您知道/希望的子类类型
  3. 在抽象基础类(class)中将 setUnit 方法声明为虚拟(也许是纯虚拟),并在子类中给它两种不同的实现:然后因为它是在基础类(class)中声明的,所以您可以在您要调用的基础类(class)对象上调用它从 map 中检索。

关于java - 从 HashMap 中检索后如何指定该对象属于哪个子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2920939/

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