如何将参数传递给需要Class <! - 的方法?延伸的东西 - >?

时间:2013-07-27 00:12:09

标签: java generics

我见过这样的代码:

void foo(Class<? extends SomeInterface> clazz)

我有一个类:

class ClassA implements SomeInterface

当我尝试时:

ClassA a = new ClassA();
foo(a);

Eclipse提供了类似“方法不适用”的内容。

我错过了什么吗?

2 个答案:

答案 0 :(得分:7)

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

请尝试使用类文字:

foo(ClassA.class);

ClassA.classClassA类的类文字,它是Class<ClassA>,符合参数说明Class<? extends SomeInterface>

要编译foo(a);foo的签名会有所不同:

void foo(SomeInterface bar)

答案 1 :(得分:1)

Class本身就是一个对象,而foo(需要一个Class对象的有界通配符。

如果ClassA确实实现/扩展SomeInterface(一个或另一个,您使用了不同的术语),则传递ClassA.classclass关键字指定获取类对象