【发布时间】:2016-12-15 08:20:02
【问题描述】:
我想让我的泛型方法接收一个枚举类型,其中包含我想从该方法返回的类。
这就是我走了多远(例如):
public class Zoo {
public Monkey apu;
public Lion simba;
public Bird zazu;
public <T extends Animal> T getAnimal(String animal, Animaltype animaltype){
switch(animal){
case "apu":
return animaltype.getType().cast(zoo.feedAnimal(animaltype.getType()))
case "simba":
return ??????????????
case "zazu":
return ??????????????
}
}
}
public enum Animaltype {
MONKEY(Monkey.class),
LION(Lion.class),
BIRD(Bird.class);
Class <?> enumClass;
Animaltype(Class<?> enumClass) {
this.enumClass = enumClass;
}
public Class<?> getType(){
return this.enumClass;
}
}
现在返回时说需要的是T,找到的是Object。
错误信息是: "需要不兼容的类型:T 找到了 Java.lang.Object
我不知道正确的语法
【问题讨论】:
-
贴出导致编译错误的代码,以及准确完整的错误。
-
不可能为“?????”填写一些内容那是完全类型安全的。你需要一个未经检查的演员表。
标签: java generics methods enums