Java 从hashmap检索后,如何指定此对象属于哪个子类?
我有一个家长班叫做“课程”,还有两个孩子班,分别是研究生班和本科生班。 我有一个hashmap hashmap课程;我将所有的研究生课程和本科生课程对象存储在hashmap中 我想使用键从hashmap中检索一个UndergroadCourse对象。 Course=courses.get(courseCode); 然后我想调用本科类中的一个方法setUnits()方法 course.setUnits(); 但是编译器说找不到符号方法setUnit() 我很确定问题是编译器在Course类而不是Undergraducer类中查找方法setUnit() 我这样做了,但不起作用 本科生课程=课程.get(课程代码); 导致不兼容类型 那么,如何从hashmap中检索undergradCourse对象作为undergradCourse对象而不是course对象呢? 然后我可以在子类中调用一个方法Java 从hashmap检索后,如何指定此对象属于哪个子类?,java,hashmap,Java,Hashmap,我有一个家长班叫做“课程”,还有两个孩子班,分别是研究生班和本科生班。 我有一个hashmap hashmap课程;我将所有的研究生课程和本科生课程对象存储在hashmap中 我想使用键从hashmap中检索一个UndergroadCourse对象。 Course=courses.get(courseCode); 然后我想调用本科类中的一个方法setUnits()方法 course.setUnits(); 但是编译器说找不到符号方法setUnit() 我很确定问题是编译器在Course类而不是U
提前感谢地图存储了两种不同类型的课程。从地图中检索课程时,您不知道检索的课程类型 修正此问题,如果你在C++中编程,至少有三种可供选择的方法来处理:
假设您使用Java编程,您可以使用instanceof操作符来确定对象是否属于某种类型
Course course = courses.get(courseCode)
if(course instanceof UndergradCourse)
{
UndergradCourse undergradCourse = (UndergradCourse)course;
// do you stuff with the undergrad course
}
注意:根据对象的实际类型,正在破坏面向对象编程。这被认为是不好的风格