我有一个名为Course的父类,还有两个子类PostgradCourse和UndergradCourse。
我有一个HashMap哈希表课程;我将所有postgradCourse和undergradCourse对象存储在哈希图中。

我想使用密钥从哈希图中检索一个undergradCourse对象。
课程课程= courses.get(courseCode);
然后我想在UndergradCourse类中调用setUnits()方法
course.setUnits();
但是编译器说找不到符号方法setUnit()

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

我这样做了,但是没有用
UndergradCourse课程= course.get(courseCode);
导致不兼容的类型

所以我怎么能从哈希图中检索到undergradCourse对象作为undergradCourse对象而不是课程对象?
这样我就可以在子类中调用方法

提前致谢

最佳答案

假设您使用Java编程,则可以使用instanceof运算符来确定对象是否属于某种类型。

Course course = courses.get(courseCode)
if(course instanceof UndergradCourse)
{
    UndergradCourse undergradCourse = (UndergradCourse)course;
    // do you stuff with the undergrad course
}


注意:取决于对象的实际类型是中断面向对象的编程。这不是好样式。

10-08 00:59