当A实现C时,将A.Class传递给公共B(Class <! - ?extends C - >)

时间:2012-06-19 21:29:08

标签: java reflection

我有一个具有此声明的函数B:

public void B(Class<? extends C> clazz);

我有一个类A和一个C类,如下所示:

public interface C {}
public class A implements C{}

我想这样做:

B(A.class);

然而,Java希望我这样做(然后抱怨未经检查的演员表)

B( (Class<? extends C>)A.class );

如何向Java表明这是完全类型安全的?

1 个答案:

答案 0 :(得分:0)

适合我:

interface C {}
class A implements C {}

public class Test {

    private static void foo(Class<? extends C> clazz) {
    }

    public static void main(String[] args) {        
        foo(A.class);
    }
}

也许您可以发布一个简短但完整的示例,说明失败了什么?