说我有一个类动物,然后分类狗和猫扩展它。我可以使用一种返回狗或猫的方法,具体取决于某些值吗?所以,这样的事情,除了工作:)
public <T extends Animal> getAnimal(){
if (a)
return new Dog();
else
return new Cat();
}
答案 0 :(得分:1)
在这种情况下你不需要使用泛型。简单地返回类型Animal
将允许返回任何Animal
的子类。但是,在将集合作为返回类型处理时,您需要添加那些疯狂的泛型内容。 IE浏览器。
private List<T extends Animal> method1() {
return new ArrayList<Dog>();
}
private List<? super Dog> method() {
return new ArrayList<Animal>();
}
答案 1 :(得分:0)
在这种情况下,您不需要使用泛型。您可以创建一个返回Animal对象的工厂类型方法:
Animal GetAnimal( AnimalType type )
{
switch ( type )
{
case AnimalType.Dog:
return new Dog( );
break;
case AnimalType.Cat:
return new Cat( );
break;
}
}
很抱歉,如果语法不合适,我不使用Java。
答案 2 :(得分:-1)
public <T extends Animal> T getAnimal(){
if (a)
return (T) new Dog();
else
return (T) new Cat();
}