如何在一行中使用 Guava 创建同步多图?

How to create a synchronized multimap with Guava in one line?

这个有效:

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());

我收到一个错误:

Type mismatch: cannot convert from Multimap Object,Object to Multimap String,String

我尝试在很多地方添加 <> 但没有成功。我做错了什么?

我仍然坚持 Java 7.

您可以为 create 使用显式类型提示:

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

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

Java 7

中需要显式类型
Multimap<String, String> n = Multimaps.synchronizedMultimap(
    HashMultimap.<String, String>create());

Java 8 引入了泛型类型推断的一些改进,因此初始代码与 Java 8

中的一样
Multimap<String, String> n = Multimaps.synchronizedMultimap(HashMultimap.create());