作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于在以下代码中,R扩展了Appendable,所以我不应该在期望R的地方返回Appendable吗?
/**
* Produces an R, to which a T has been semantically appended,
* whatever that may mean for the given type.
*/
interface Appendable <R, T>
{
/**
* Append is not expected to modify this Appendable,
* but rather to return an R which is the result
* of the append.
*/
R append(T t);
}
interface PluralAppendable <R extends Appendable<R, T>, T>
extends Appendable<R, T>
{
default R append(T... els)
{
// Easier to debug than folding in a single statement
Appendable<R, T> result = this;
for(T t : els)
result = result.append(t);
/* Error: Incompatible types.
Required: R
Found: Appendable<R, T> */
return result;
}
}
最佳答案
由于在以下代码中,R扩展了Appendable,所以我不应该在期望R的地方返回Appendable吗?
不,你不能。如果继承是相反的,则只能执行此操作。
但是,您可以将result
向下转换为R
,以进行编译,但是会显示未选中Cast的警告。
return (R)result;
关于java - Java有界通用协方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18018334/
我是一名优秀的程序员,十分优秀!