Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何转换类<&燃气轮机;到泛型类型_Java_Generics_Casting - Fatal编程技术网

Java 如何转换类<&燃气轮机;到泛型类型

Java 如何转换类<&燃气轮机;到泛型类型,java,generics,casting,Java,Generics,Casting,我有一个返回Class的方法,我可以给你一些关于如何编译的提示,但我怀疑你在任何情况下都走错了方向。即使您的代码编译(并运行),它也可能不会执行您认为它会执行的操作。然而,就目前而言,仅编译更改: public类什么是D?您在passString中做什么?你能详细解释一下吗?我想我们需要了解更多关于类对象的操作,以回答您的问题。实际上,?extends可以是我想说的任何东西,也可以是我创建的自定义类。例如,动物是所有动物的父类,我可以说,类修改了我的问题,我希望这能帮助你理解这个场景。你必须施放

我有一个返回
Class的方法,我可以给你一些关于如何编译的提示,但我怀疑你在任何情况下都走错了方向。即使您的代码编译(并运行),它也可能不会执行您认为它会执行的操作。然而,就目前而言,仅编译更改:


public类什么是
D
?您在
passString
中做什么?你能详细解释一下吗?我想我们需要了解更多关于类对象的操作,以回答您的问题。实际上,
?extends
可以是我想说的任何东西,也可以是我创建的自定义类。例如,动物是所有动物的父类,我可以说,
类修改了我的问题,我希望这能帮助你理解这个场景。你必须施放
(T)
,但是没有办法保证这个类型的安全。您对
类型一无所知,尤其是当它与泛型
T
匹配时。如果类型匹配,它将编译并工作;如果类型不匹配,它将在运行时崩溃。也就是说,你在混合不同的东西。你说你有
,但是你想要的是
T
,而不是
,这是两件不同的事情。
Class
不是
Lion
。OPs
passString
方法采用的是
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)
{
    //....;
}