0

我正在学习通用并在某些时候受到打击。这是我的课

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.

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

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

我知道我没有正确遵守合同,但不知道如何做到这一点。我的意图是在运行时设置类,它应该接受所有那些暗示ValidationProvider这是一个接口的暗示。

4

1 回答 1

1

getInstance(Class type, String name) 返回 T not Class -> ValidationProvider 的实例而不是类对象。

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

于 2012-10-01T16:35:07.717 回答