我正在学习泛型并且在某些方面受到了打击。我的班级是
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>
答案 0 :(得分:1)
getInstance(类类型,字符串名称)返回T而不是类 - &gt; ValidationProvider的实例不是类对象。
这就是异常消息所说的:你需要一个Class对象,但是你传递的是ValidationProvider对象。