java - 创建抛出编译器错误的对象列表

标签 java arrays list object generics

我目前正在学习泛型作为我的编程类(class)的一部分,但我无法理解为什么以下代码会引发编译器错误:

List<Object> objs = Arrays.asList(1,"2");

据我所知,如果您没有显式声明方法的类型参数,例如 Arrays.<Integer>asList();然后使用最合理的选择为您生成。

以下代码:

List<Object> objs = Arrays.<Object>asList(1,"2");

之所以有效,是因为我明确地告诉编译器,“我希望此方法的类型参数为 Object”,但我很好奇为什么这没有自动成功完成?

最佳答案

出现这个问题是因为不同的类型参数被传递给方法 Arrays.asList,所以编译器试图找到你的类型参数的所有父类(super class)型的交集。

您使用 Stringint 参数创建了一个列表。所以编译器只发现 Serializable 作为通用接口(interface)。

这将被编译:

List<? extends Serializable> list = Arrays.asList(1, "2");

引用阅读: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ404

关于java - 创建抛出编译器错误的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34588948/

相关文章:

java - 在 JSP 的 URL 中隐藏表单操作值

Java:多个类和数组

arrays - 为什么用数组来实现 "list"而不是哈希表?

java - 如何按交集过滤一组集合?

java - 听Java中的类

java - 在 Intellij Ultimate 中为简单的 Spring 应用程序设置 applicationContext.xml

C编程数组赋值问题

javascript - 嵌套数组操作奇怪的行为,js

python - 在没有列表理解的情况下在 Python 中提取包含字符串的列表项?

c - 附加到 c 中的列表