Новый ConcurrentHashMap из нового ConcurrentHashMap
Я пытаюсь инициализировать ConcurrentHashMap
из ConcurrentHashMap
с
private final ConcurrentHashMap<
String,
ConcurrentHashMap<String, Double>
> myMulitiConcurrentHashMap = new ConcurrentHashMap<
String,
new ConcurrentHashMap<String, Double>()
>();
но javac
дает
HashMapper.java:132: error: illegal start of type
new ConcurrentHashMap<String, Double>()
^
HashMapper.java:132: error: '(' or '[' expected
new ConcurrentHashMap<String, Double>()
^
HashMapper.java:132: error: ';' expected
new ConcurrentHashMap<String, Double>()
указывая на второй new
,
Как может myMulitiConcurrentHashMap
быть new
Правильно ли инициализированы?
3 ответа
Решение
Кстати, Java 7 теперь имеет более лаконичный синтаксис ("ромб"):
private final
ConcurrentHashMap<String, ConcurrentHashMap<String, Double>>
myMulitiConcurrentHashMap =
new ConcurrentHashMap<>();
Вы также сможете использовать интерфейсы с левой стороны:
private final
ConcurrentMap<String, ConcurrentMap<String, Double>>
myMulitiConcurrentHashMap =
new ConcurrentHashMap<>();
Вы не инициализируете внутренний ConcurrentHashMap<String, Double>
; только следующее должно работать:
new ConcurrentHashMap<
String,
ConcurrentHashMap<String, Double>
>();
Общими параметрами типа являются именно типы.
Не имеет смысла иметь Map<String, new SomeType()>
,
Вам нужно просто написать тип второго параметра.
Перефразируя, вы создаете один new ConcurrentHashMap<K, V>()
, который может содержать несколько внутренних карт позже.