Java通用混淆外卡

时间:2012-10-01 16:20:13

标签: java

我正在学习泛型并且在某些方面受到了打击。我的班级是

public class MyValidator{

    private Class providerClass;

    public MyValidator(Container container){
       setProviderClass(container.getInstanc(ValidationProvider.class),"my.providerClass");
   }

    public void setProviderClass(Class<? extends ValidationProvider> providerClass)
    {
        this.providerClass = providerClass;
    }

}

容器签名

 <T> T getInstance(Class<T> type, String name)
Gets an instance of the given dependency which was declared in ContainerBuilder.

Container是我正在使用的平台的内置DI机制,但是当我从构造函数中调用setter方法时,我在Eclipse中得到以下异常

  

MyValidator类型中的方法setProviderClass(Class)不适用于参数(ValidationProvider)

我知道我没有正确地遵守合同但不知道如何做到这一点。我的意图是在运行时设置课程,并且它应该接受所有那些暗示ValidationProvider这个界面的人。 / p>

1 个答案:

答案 0 :(得分:1)

getInstance(类类型,字符串名称)返回T而不是类 - &gt; ValidationProvider的实例不是类对象。

这就是异常消息所说的:你需要一个Class对象,但是你传递的是ValidationProvider对象。