【发布时间】:2016-03-07 22:37:19
【问题描述】:
(This 的问题与我的问题相似,但我觉得它们足够不同,我可以创建一个新问题)。
基本上在我的小型 3D 游戏中,我的所有实体都由许多不同的组件组成,一个用于纹理,一个用于移动等。所有这些子组件都继承自接口“组件”。到目前为止,我使用过这样的方法;
public MovementComponent getMovementComponent() {
for (Component c : components) {
if (c instanceof MovementComponent)
return (MovementComponent) c;
}
return null;
}
获取某个组件的实例。但现在我希望将其更改为更通用的方法,可以从我的组件列表中获取任何类型的组件。我测试过这样做;
public Component getComponentType(Class component) {
for (Component c : components) {
if (c.getClass() == component)
return c.getClass().cast(c);
}
return null;
}
但即使我转换结果,它总是返回接口的“”“实例”“”,而不是子组件的实例,这意味着我仍然必须将它转换为适当的类型。基本上我希望有一种方法可以:
- 遍历集合。
- 查找特定的子类。
- 返回该子类的实例。
我觉得我在正确的轨道上,但我无法让它发挥作用。感谢您的回复和反馈。
【问题讨论】:
标签: java inheritance methods subclass