如何在一行中创建与Guava同步的多图?

时间:2018-01-10 10:18:13

标签: java generics guava

这有效:

Multimap<String, String> m = HashMultimap.create();

这也有效:

Multimap<String, String> m = HashMultimap.create();
Multimap<String, String> n = Multimaps.synchronizedMultimap(m);

但为什么这不起作用?

Multimap<String, String> n = Multimaps.synchronizedMultimap(HashMultimap.create());

我收到错误:

  

类型不匹配:无法从Multimap Object,Object转换为    Multimap String,String

我尝试添加&lt;&gt;在许多地方但没有成功。我做错了什么?

我仍然坚持使用Java 7.

2 个答案:

答案 0 :(得分:4)

您可以对create

使用显式类型提示
Multimap<String, String> n = Multimaps.synchronizedMultimap(
    HashMultimap.<String, String>create());

Java 8有一些类型推断更改,因此它在没有提示的情况下正常工作。

答案 1 :(得分:-1)

它需要Java 7中的显式类型

Multimap<String, String> n = Multimaps.synchronizedMultimap(
    HashMultimap.<String, String>create());

Java 8在泛型类型推断中引入了一些改进,因此初始代码在Java 8中起作用

Multimap<String, String> n = Multimaps.synchronizedMultimap(HashMultimap.create());