【发布时间】:2020-01-08 02:28:22
【问题描述】:
我需要一个可以包含任何类型值的 Map。所以我尝试使用HashMap。但是,如果我尝试从映射中获取值,IDE 会说类型不匹配。
这是我的代码的一部分:
Map<String, Object> state1 = new HashMap<>();
state1.put("location", exit1);
state1.put("direction", direction);
state1.put("number", 0);
Deque<Map> q = new ArrayDeque<>();
q.add(state1);
List<Integer> numbers = new ArrayList<>();
while (!q.isEmpty()) {
Map<String, Object> state = q.poll();
Pair location = state.get("location");
变量exit1、direction已经在这部分之前定义好了,所以你可以忽略它。此外,您不必关心这部分下面的代码。
我的 IDE 说 Map<String, Object> state = q.poll(); 行的类型不兼容 — Pair 是必需的,但找到了 Object。我怎样才能使它兼容?
我正在解决一个只能运行一个文件的问题,因此我无法实现新类。
【问题讨论】:
-
Pair location = (Pair) state.get("location");? -
你有两个泛型问题:一个是你的
Deque<Map>应该是Deque<Map<String, Object>>;另一个在您的Map<String, Object>中,除非您强制转换它们,否则编译器不会知道映射值的精确类型。