java - 在子类中使用泛型时发生奇怪的编译错误
问题描述
下面是一个代码示例,它会导致编译错误。
class A<T extends Number> {
T a;
T getA() {
return a;
}
}
class B<U> extends A<Integer> {
public void test() {
Integer i = getA();//fine
B b = new B();
Integer i1 = b.getA(); //Ooop !! has an error!!!
Number i2=b.getA(); //fine
}
}
如果我删除<U>
通用符号或使用B<?> b = new B();
,那么它编译得很好。上面的代码是否违反了任何 java 规范。
解决方案
推荐阅读
- heatmap - 使用stackdriver时如何将grafana中的热图存储桶边界设置为毫秒
- c++ - c ++中多组对的奇怪行为
- php - PHP api休息路由器问题
- python - tf.estimator.predict 使用 tensorflow 排名模块慢
- kubernetes - 从远程机器上部署的 kubernetes 仪表板服务访问本地笔记本电脑时无法访问站点问题
- regex - 正则表达式未捕获可选组
- javascript - 如何为使用 CLI 的最新版本的 react native 添加字体?
- python - 在二维码中存储 SQLite 表的行数据
- javascript - 语义 UI 下拉多选删除刷新值
- android - Android 深度链接路径模式