gpt4 book ai didi

java - 访问 Map#entrySet() 时为 "Incompatible types"

转载 作者:搜寻专家 更新时间:2023-10-31 20:12:15 24 4
gpt4 key购买 nike

为了好玩,我正在开发一个简单的配置文件读取器,但在编写测试方法时遇到了一个奇怪的错误。在里面是for循环,我已经确定它会导致问题。它给了我这个编译错误:

Incompatible types:
Required: java.util.Map.Entry
Found: java.lang.Object

map 声明是这样的:

Map<String, String> props = new HashMap<String, String>();

for循环写成如下:

for (Map.Entry<String, String> entry : props.entrySet()) {
//Body
}

没有导入的 SSCCE 证明了问题(至少在 IntelliJ 中):

public class A {
public static void main(String[] args) {
Map<String, String> props = new HashMap<String, String>();
for (int i = 0; i < 100; i++) {
props.put(new BigInteger(130, random).toString(32), new BigInteger(130, random).toString(32));
}
for (Map.Entry<String, String> entry : props.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}

mapMap<String, String> ,所以这不是问题。我用谷歌搜索了其他方法,但人们使用的主要方法似乎是这个!但由于某种原因它仍然失败。任何帮助,将不胜感激。如果您提供替代解决方案,请确保它是快速的 - 这些配置文件可能会很大。

最佳答案

这是您可能在做什么的演示 - 如果没有更多代码,很难确定。

class ATest<T> {
Map<String, String> props = new HashMap<String, String>();

void aTest() {
// Works fine.
for (Map.Entry<String, String> entry : props.entrySet()) {
}
}

void bTest() {
ATest aTest = new ATest();
// ERROR! incompatible types: Object cannot be converted to Entry<String,String>
for (Map.Entry<String, String> entry : aTest.props.entrySet()) {
}
}

void cTest(Map props) {
// ERROR! incompatible types: Object cannot be converted to Entry<String,String>
for (Map.Entry<String, String> entry : props.entrySet()) {
}
}

}

请注意,在 bTest 中我创建了一个 ATest没有它的通用类型参数。在那种情况下,Java 会从类中删除所有 通用信息,包括您将看到的<String,String>。来自 props里面有变量。

或者 - 您可能不小心删除了属性映射的通用性质 - 正如我在 cTest 中演示的那样.

关于java - 访问 Map#entrySet() 时为 "Incompatible types",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20123141/

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