2015-12-15 81 views
0

我有以下代码:Java对象:动态类型不可见

public class A implements B{ 
    private final Map<String, Map<String, Object>> processors = new ConcurrentHashMap<>(); 

... 
@override(from B) 
public void doSomething() { 
processors.putIfAbsent(new ConcurentHashMap<>()); ->compilation error 
} 

以下错误是加薪:

The method putIfAbsent() is undefined for the type Map<String,Map<String,object> 

有人可以向我解释这是这个错误的原因?

+1

什么是。 ???它应该是处理器的权利? –

+1

确实 - 并不清楚'@override(from B)'部分是什么意思,我怀疑它不相关。一个简短但完整的例子会让事情变得更清晰。我已经添加了一个答案,我很确定你在找什么,但你应该明确地编辑这个问题。 –

+0

另外,请指定您正在使用的是哪个版本的Java - 它会产生巨大的差异。 –

回答

1

当您致电putIfAbsent时,您可能缺少key。你只是通过value(即地图)作为参数。

另外:什么是a?尝试像

processors.putIfAbsent("a key", new ConcurrentHashMap<String, Object>());