Java 创建对象列表引发编译器错误
我目前正在学习泛型作为编程类的一部分,我在理解以下代码为何会引发编译器错误时遇到问题:Java 创建对象列表引发编译器错误,java,arrays,list,object,generics,Java,Arrays,List,Object,Generics,我目前正在学习泛型作为编程类的一部分,我在理解以下代码为何会引发编译器错误时遇到问题: List<Object> objs = Arrays.asList(1,"2"); List objs=Arrays.asList(1,“2”); 据我所知,如果没有显式声明方法的类型参数,例如Arrays.asList()然后使用最合理的选择为您生成 以下代码: List<Object> objs = Arrays.<Object>asList(1,"2"); Li
List<Object> objs = Arrays.asList(1,"2");
List objs=Arrays.asList(1,“2”);
据我所知,如果没有显式声明方法的类型参数,例如Arrays.asList()代码>然后使用最合理的选择为您生成
以下代码:
List<Object> objs = Arrays.<Object>asList(1,"2");
List objs=Arrays.asList(1,“2”);
之所以有效,是因为我明确地告诉编译器,“我希望此方法的类型参数为Object”,但我很好奇为什么不能自动成功完成此操作?List objs=Arrays.asList(1,“2”)
仅适用于Java 8:)
甚至List objs=Arrays.asList(“a”、“b”)
也将使用Java8编译
检查这些参考资料:
List objs=Arrays.asList(1,“2”)
仅适用于Java 8:)
甚至List objs=Arrays.asList(“a”、“b”)
也将使用Java8编译
检查这些参考资料:
出现此问题是因为向方法Arrays.asList传递了不同的类型参数,因此编译器试图找到类型参数的所有超类型的交集
您使用String
和int
参数创建了一个列表。所以编译器发现只有可序列化为公共接口
这将被汇编为:
List<? extends Serializable> list = Arrays.asList(1, "2");
List出现此问题是因为向方法Arrays.asList传递了不同的类型参数,因此编译器试图找到类型参数的所有超类型的交集
您使用String
和int
参数创建了一个列表。所以编译器发现只有可序列化为公共接口
这将被汇编为:
List<? extends Serializable> list = Arrays.asList(1, "2");
List“List objs=Arrays.asList(1,“2”);”的编译错误吗?我只是尝试了一下,没有发现任何编译错误。它适用于Java 8:)您使用的Java版本是什么?类型推断正在慢慢变好,并且您的示例使用Java8编译得很好。您是否发现“List objs=Arrays.asList(1,“2”);”的编译错误?我只是尝试了一下,没有发现任何编译错误。它适用于Java 8:)您使用的Java版本是什么?类型推断正在慢慢变得更好,并且您的示例使用Java8编译得很好。