java泛型问题

public interface IFacade {
public Map execute(T param);
}

public final class FacadeFactory {
public static > T getInstance(Class<? extends IFacade<?>> clazz) {
return Factory.getBean(clazz.getSimpleName());
}
}

public class Facade implements IFacade> {
@Override
public Map execute(Map o) {
return null;
}
private static void doSomething(List records) {
}
}

Facade facade = FacadeFactory.getInstance(Facade.class);

最前边这个Facade类原来不带这个泛型,只是实现了IFacade>这个接口。
FacadeFactory.getInstance(Facade.class);这个调用也是木有问题的。

现在我由于需要Facade类增加了后,
FacadeFactory.getInstance(Facade.class);这个工厂调用的getInstance部分就提示编译错误了。提示:
ZkiFacadeFactory 的方法 getInstance(Class<? extends IFacade<?>>) 的参数 (Class) 不匹配。

请问是哪里的问题?

weixin_42506474
weixin_42506474 通过重构,解除了Facade类的<E extends AbstractDto>限制。问题解决了。 依然感谢两位的回答,貌似两种办法都可以解决问题。 可是我还是不太明白原理,还得继续提高哈。
大约 7 年之前 回复

2个回答

维数不匹配,建议删掉T getInstance(Class<? extends IFacade<?>> clazz) 里面的IFacade<?>问号,T getInstance(Class<? extends IFacade> clazz)

Facade facade = FacadeFactory.getInstance(Facade.class);
改为
Facade facade = FacadeFactory.getInstance((Class<? extends IFacade<?>>) Facade.class);

因为Facade是,而参数需要的类型为Class<? extends IFacade<?>>

QiangGe2Dai
QiangGe2Dai 补充一下,其实就是说编译时不知道E是否实现了IFacade<?>
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐