作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法编译它,而且我不明白原因。最终,我想将类扩展 TClass 的对象集合传递到生成方法中,该方法采用类扩展 TClass 的对象集合,这应该有效。
如有任何帮助,我们将不胜感激。
public interface Generator<IT extends ITClass, T extends TClass> {
IT generate(Collection<T> tClassCollection)
}
Generator<?, ? extends TClass> generator = generatorClass.newInstance();
Collection<? extends TClass> TClassCollection = ...
... generator.generate(TClassCollection);
我收到此错误
The method generate(Collection<capture#8-of ? extends TClass>) in the type
Generator<capture#7-of ?,capture#8-of ? extends TClass> is not applicable for the arguments (Collection<capture#9-of ? extends TClass>)
最佳答案
This should work
没有;如果这样做的话,就会在类型系统中打开一个漏洞。考虑:
class SpecialT extends TClass {}
class SpecialGenerator extends Generator<ITClass, SpecialT> {}
Generator<?, ? extends TClass> generator = SpecialGenerator.class.newInstance();
Collection<? extends TClass> TClassCollection = Arrays.asList(new TClass());
generator.generate(TClassCollection);
一个SpecialGenerator
只能与 Collection<SpecialT>
一起使用,但您正在尝试传递 Collection<TClass>
,它可以包含除 SpecialT
之外的类型的实例.
关于java - 有界 Java 泛型无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270851/
我是一名优秀的程序员,十分优秀!