java泛型 - 方法返回类型

时间:2009-08-28 00:02:54

标签: java generics

说我有一个类动物,然后分类狗和猫扩展它。我可以使用一种返回狗或猫的方法,具体取决于某些值吗?所以,这样的事情,除了工作:)

public <T extends Animal> getAnimal(){
  if (a)
    return new Dog();
  else
    return new Cat();
}

3 个答案:

答案 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();
}