如何将参数传递给需要Class <?的方法?扩展的东西>?

NSF*_*NSF 2 java generics

我见过这样的代码:

void foo(Class<? extends SomeInterface> clazz)

我有一个类:

class ClassA implements SomeInterface

当我尝试时:

ClassA a = new ClassA();
foo(a);
Run Code Online (Sandbox Code Playgroud)

Eclipse给出了"方法不适用"之类的东西.

我错过了什么?

rge*_*man 7

foo方法将Class对象作为参数,而不是该类的实例.

请尝试使用类文字:

foo(ClassA.class);
Run Code Online (Sandbox Code Playgroud)

ClassA.class是类的类文字ClassA,它是一个Class<ClassA>适合参数描述的类Class<? extends SomeInterface>.

为了foo(a);编译,签名foo会有所不同:

void foo(SomeInterface bar)
Run Code Online (Sandbox Code Playgroud)