gpt4 book ai didi

java - 从父类(super class)或接口(interface)列表中获取子类实例

转载 作者:行者123 更新时间:2023-11-29 06:55:13 24 4
gpt4 key购买 nike

(This 问题与我的相似,但我觉得它们完全不同,我可以创建一个新问题)。

基本上,在我的小型 3D 游戏中,我所有的实体都由许多不同的组件组成,一个用于纹理,一个用于移动等。所有这些子组件都继承自“组件”接口(interface)。到目前为止,我一直使用这样的方法;

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;
}

但即使我转换结果,它总是返回接口(interface)的“”“实例””,而不是子组件的实例,这意味着我仍然必须将它转换为适当的类型。基本上我希望有一种方法可以:

  1. 遍历集合。
  2. 找到一个特定的子类。
  3. 返回该子类的实例。

我觉得我在这里走在正确的轨道上,但我无法让它发挥作用。感谢您的回复和反馈。

最佳答案

你需要类似的东西

public <T extends Component> T getComponentType(Class<T> component) {
...
return (T) c;
}

方法声明表明它将返回一个与传入参数相同类型的组件。

这样调用它:

MovingComponent mc = smth.getComponentType(MovingComponent.class);

关于java - 从父类(super class)或接口(interface)列表中获取子类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35855520/

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