java - 参数化类型的 Java 类型推断,例如 List
问题描述
今天早上编码时,我发现了一些对我来说很奇怪的东西,我想解释一下为什么 java 会这样。这是一个解释我在做什么的片段:
public class Test{
static int method(List<CharSequence> a) {
//nothing important here
}
public static void main(String[] args) {
List<String> myList = Arrays.asList("abc", "def");
//this won't compile since it expect a list of CharSequence
method(myList);
}
}
我本来希望这可以编译,因为字符串实现了 CharSequence。我知道我可以更改方法的签名以获得:
static int method(List<? extends CharSequence> a)
Java 中的一种方法可以强制我的 List 中的对象类型严格地是 CharSequence 吗?
感谢您的回答!
编辑:正如@sweeper 所说,这是 List<Dog> 是 List<Animal> 的子类的副本吗?为什么 Java 泛型不是隐式多态的? 感谢您的所有回答,这是我知道但完全忘记的事情。
解决方案
推荐阅读
- c++ - 循环遍历相同数据的优雅替代方案?
- java - 缓存由 Code 或其他节点创建后是否重新配置?
- java - 如何确保此 recylerview 仅在必要时进行调整?
- python - 如何通过输入定义函数中的变量?
- abap - SAP Tree GetAbapImage 为不同的图标返回相同的值,如何解决?
- python - 使用 peewee 构建 FIQL 查询
- javascript - 简单 AJAX 调用上未捕获的 TypeError
- ansible - Ansible 没有在文件之间传递变量
- python - 如何设置不等式来检查“消耗”(基本上是碰撞)
- r - ifelse in r 有两个或多个条件