作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以向我解释一下为什么这段代码无法编译吗?当我将 U
替换为 ?
时,它可以工作。为什么它没有被推断为Object
?
class Scratch {
static <U> List<U> method(int x) {
if (x < 50) {
return new ArrayList<String>();
} else {
return new ArrayList<Number>();
}
}
}
最佳答案
因为ArrayList<Object>
并说ArrayList<String>
不是相关类型,即 ArrayList<String>
不继承自ArrayList<Object>
并且无法转换为它。
如果我们想象这可以完成,那么这段代码将不是类型安全的:
ArrayList<String> stringList = ...;
ArrayList<Object> objectList = stringList; // this is what is not allowed in reality
objectList.add(new Integer());
现在你有 stringList
中的整数这绝对是您不希望在类型安全程序中出现的情况。
关于java - 不兼容的类型 : List<A> cannot be converted to List<U>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55849884/
我是一名优秀的程序员,十分优秀!