java - 使用菱形分配具有有界通配符的泛型类型
问题描述
以下代码:
Set<? extends Integer> set = new HashSet<>();
编译良好。但是,使用菱形符号的本质只是为了不再重写 LHS 类型参数。这意味着上面的语句应该与以下语句等效:
Set<? extends Integer> set = new HashSet<? extends Integer>();
但事实证明,事实并非如此。我想这是合理的,因为编译器不知道对象的类型参数,因为它是通配符('?')。当不使用有界类型参数时,一切正常,所以我认为这同样适用于任何情况。但是为什么仍然允许语法呢?最后,第一个语句的类型参数是什么?
谢谢
解决方案
推荐阅读
- java - ANDROID:MVVM + Retrofit:我应该如何以及在哪里从 JSON 对象数组中检索 JSON 对象列表?
- ios - 如何使用短信实现inapp purchase iOS web app
- javascript - 遍历选择中的所有选项并将值添加到选项名称
- string - 在 SPARQL 中反转字符串
- wpf - WPF - 转换器作为 DependencyObject
- node.js - 使用嵌套对象发送带有 curl 的 Post 请求
- excel - 程序命令按钮在列上运行公式
- python - 在 TensorFlow 中检测损坏的图像
- android - RxJava 收集排放到列表
- python - 生成随机数而不分配新的内存块