接受特定类型的类的method参数

时间:2016-04-13 16:07:30

标签: java

假设我有一个抽象类:

public abstract class Car {

}

上述类的内部类扩展:

public class Foo {

   public static final class BMW extends Car {
        public final Foo foo = new Foo("foo");
   }

}

如何创建接受类BMW的方法?

我目前的方法:

void listInstances(final Class<Car> clazz) {}

给出了这个错误:

incompatible types: Class<Foo.BMW> cannot be converted to Class<Car>

我称之为:

listInstances(Foo.BMW.class);

1 个答案:

答案 0 :(得分:2)

支柱是正确的......

void listInstances(Class<Car>)

...必须接受Car类对象而只接受Car类对象。可替换地...

void listInstances(Class<? extends Car>);

可以为扩展Car(包括Car)的类接受任何Class对象。

奇怪的是(基于方法的名称)没有返回值。通常,当方法具有这样的名称时,我会看到类似的内容:

<T extends Car> List<T> listInstances(Class<T> type);

这可以保证返回类型与输入类型匹配。