Java 通过它获取组件';s泛型
我想做的是创建一个方法,允许用户搜索游戏组件列表,找到他们传入的任何类的游戏组件 我完全不知道该怎么做。有什么想法吗 这就是我到目前为止所尝试的。我尝试了很多不同的方法,但是我一直觉得classDude不能被解析为一种类型。提前谢谢Java 通过它获取组件';s泛型,java,generics,search,components,Java,Generics,Search,Components,我想做的是创建一个方法,允许用户搜索游戏组件列表,找到他们传入的任何类的游戏组件 我完全不知道该怎么做。有什么想法吗 这就是我到目前为止所尝试的。我尝试了很多不同的方法,但是我一直觉得classDude不能被解析为一种类型。提前谢谢 public GameComponent<?> getComponentOfType(Class<Object> classDude) { for(GameComponent<?> gC : mCompo
public GameComponent<?> getComponentOfType(Class<Object> classDude)
{
for(GameComponent<?> gC : mComponentList)
{
if(gC instanceof classDude)
{
}
}
}
公共游戏组件getComponentOfType(类classDude)
{
用于(游戏组件gC:mComponentList)
{
if(classDude的gC实例)
{
}
}
}
听起来你想要:
public <T extends GameComponent<?>> T getComponentOfType(Class<T> classDude)
{
for(GameComponent<?> gC : components)
{
if(classDude.isInstance(gC))
{
return classDude.cast(gC);
}
}
return null;
}
publicGetComponentOfType(类classDude)
{
用于(游戏组件gC:components)
{
if(类dude.isInstance(gC))
{
return(GameComponent)classDude.cast(gC);
}
}
返回null;
}
换句话说,您缺少的是和方法。如果我想让函数本身看起来像这样,我该怎么做:getComponent()@user1159418:你不能——这不是Java中调用泛型方法的方式,你必须提供类,否则类型擦除会影响你。不过您可以使用
getComponent(TextureComponent.class)
。非常感谢您抽出时间!
public GameComponent<?> getComponentOfType(Class<?> classDude)
{
for(GameComponent<?> gC : components)
{
if(classDude.isInstance(gC))
{
return (GameComponent<?>) classDude.cast(gC);
}
}
return null;
}