Java 如何转换类<&燃气轮机;到泛型类型
我有一个返回Java 如何转换类<&燃气轮机;到泛型类型,java,generics,casting,Java,Generics,Casting,我有一个返回Class的方法,我可以给你一些关于如何编译的提示,但我怀疑你在任何情况下都走错了方向。即使您的代码编译(并运行),它也可能不会执行您认为它会执行的操作。然而,就目前而言,仅编译更改: public类什么是D?您在passString中做什么?你能详细解释一下吗?我想我们需要了解更多关于类对象的操作,以回答您的问题。实际上,?extends可以是我想说的任何东西,也可以是我创建的自定义类。例如,动物是所有动物的父类,我可以说,类修改了我的问题,我希望这能帮助你理解这个场景。你必须施放
Class的方法,我可以给你一些关于如何编译的提示,但我怀疑你在任何情况下都走错了方向。即使您的代码编译(并运行),它也可能不会执行您认为它会执行的操作。然而,就目前而言,仅编译更改:
public类什么是D
?您在passString
中做什么?你能详细解释一下吗?我想我们需要了解更多关于类对象的操作,以回答您的问题。实际上,?extends
可以是我想说的任何东西,也可以是我创建的自定义类。例如,动物是所有动物的父类,我可以说,类修改了我的问题,我希望这能帮助你理解这个场景。你必须施放(T)
,但是没有办法保证这个类型的安全。您对?
类型一无所知,尤其是当它与泛型T
匹配时。如果类型匹配,它将编译并工作;如果类型不匹配,它将在运行时崩溃。也就是说,你在混合不同的东西。你说你有类
,但是你想要的是T
,而不是类
,这是两件不同的事情。Class
不是Lion
。OPspassString
方法采用的是T
而不是Class
。也就是说,他想给这个方法一个Lion
(在他的例子中)而不是类
(这当然是不可能的)。@Zabuzard我知道,这就是为什么我说“让它编译”,但在功能上不一定是他所期望的。但我认为编译示例可能有助于OP理解他们所面临的问题。或者,您可以捕获涵盖所有这些问题的ReflectiveOperationException
。当然,或者只捕获Exception
,但根据异常类型,OP可能需要不同的补偿行为。这些只是捕鼠存根。
public Class<? extends Animal> getAnimal(Animal animal)
{
//....
}
public Class<? extends Animal> getAnimal()
{
return Lion.class;
}
public <T extends Animal> void convertToGenericsAndAssign()
{
T animal = getAnimal();
//getting error here
//Type mismatch: cannot convert from Class<capture#15-of ? extends Animal> to T
passString(animal);
}
public void passGenericAnimal(D animal)
{
//....;
}