gpt4 book ai didi

Java 编译器与泛型错误

转载 作者:行者123 更新时间:2023-12-01 16:32:36 25 4
gpt4 key购买 nike

我在使用此代码时遇到编译器错误:

Map<String, String[]> myMap;

void set(Map<String, Object> foo) { }

set(myMap); // generates error

Error: "The method set(Map<String,Object>) in the type XXX is not applicable for the arguments (Map<String,String[]>)"

这对我来说毫无意义,因为 String[] 实际上是一个对象,并且与 set() 中的参数完全兼容。

直到我从 JDK 1.6 升级到 1.7 后,此错误才出现在我的代码中。我在 Eclipse 中没有看到用于关闭它的开关。我如何编译此代码?

编辑:

如果我使用中间变量并删除泛型,它会编译:

Map anotherMap = myMap;
set(anotherMap);

最佳答案

泛型继承和我们常规理解的OO继承不同。请阅读此tutorial .

要使代码编译,您可能需要更改方法语法,如下所示:

void set(Map<String, ?> foo) { }

编辑:正如 dasblinkenlight 评论的那样,如果您计划在 set 方法中对 Map 进行修改,那么除非您定义了具体类型,否则它将无法工作。

关于Java 编译器与泛型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com