Guava缓存覆盖错误

阿比罗普·萨卡

Noob关于泛型的问题。我试图覆盖类中loadAll方法CacheLoader它的签名是

public Map<K,V> loadAll(Iterable<? extends K> keys)

现在,当我使用loadAll(List<Integer>)重写时,会引发错误并建议删除@Override注释,但是与相同loadAll(Iterable<? extends Integer>)有人可以告诉我区别。也不list是可迭代的吗?

挑战

如您所见,JavaDoc List确实实现了该接口Iterable

您的新签名:

public Map<K,V> loadAll(List<Integer>)

但是不会覆盖该方法:

public Map<K,V> loadAll(Iterable<? extends K> keys)

因为您将方法的调用者限制为type的参数,List但要“覆盖”您尝试覆盖的接口的promise,则必须接受type的参数Iterable<? extends K> keys如果为接口提供参数类型,Iterable<? extends Integer>那么您就是在这样做。

另一个说明这一点的示例:非工作签名将不接受,Set而接口的原始方法将接受

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章