在 HashMap 中访问抽象 class 的 subclass
Access subclass of abstract class in HashMap
如果我有一个名为 map 的 HashMap 字段,我有一个名为 Slot 的枚举和一个名为 Item 的抽象 class并想访问继承自它的名为 Chair 的 Item 的 subclass 如何从抽象 [=27] 中访问它=]?这是我的领域:
private HashMap<Slot, Item> map;
我想以某种方式访问它:
Chair chair = map.get(Slot.CHAIR);
但这是不可能的。我该怎么做?
如果您确定您正在访问的 Item
是一个 Chair
,您可以像这样进行简单的转换:
Chair chair = (Chair) map.get(Slot.CHAIR);
如果您从地图中检索到的 Item
不是 Chair
,此解决方案将在运行时抛出 ClassCastException
。
如果我有一个名为 map 的 HashMap 字段,我有一个名为 Slot 的枚举和一个名为 Item 的抽象 class并想访问继承自它的名为 Chair 的 Item 的 subclass 如何从抽象 [=27] 中访问它=]?这是我的领域:
private HashMap<Slot, Item> map;
我想以某种方式访问它:
Chair chair = map.get(Slot.CHAIR);
但这是不可能的。我该怎么做?
如果您确定您正在访问的 Item
是一个 Chair
,您可以像这样进行简单的转换:
Chair chair = (Chair) map.get(Slot.CHAIR);
如果您从地图中检索到的 Item
不是 Chair
,此解决方案将在运行时抛出 ClassCastException
。