以下代码无法编译
import com.google.common.collect.LinkedHashMultimap;
public class Test {
public static void main(String[] args) {
LinkedHashMultimap<String, String> p = new LinkedHashMultimap<String, String>();
}
}
错误是:构造函数LinkedHashMultimap()不可见
我已导入谷歌Java库,它们位于构建路径
和
LinkedHashMultimap<String, String> p;
单独不会导致编译错误......很奇怪
答案 0 :(得分:6)
使用静态create方法获取LinkedHashMultimap的新实例。
LinkedHashMultimap<String, String> p = LinkedHashMultimap.create();
答案 1 :(得分:2)
LinkedHashMultimap
没有公共构造函数,获取实例的方法是使用工厂方法create
。其原因是Java泛型中存在漏洞,因为类型推断只适用于方法而不适用于构造函数。这意味着而不是例如
LinkedHashMultimap<String, Map<String, List<String>>> =
new LinkedHashMultimap<String, Map<String, List<String>>>();
你可以写
LinkedHashMultimap<String, Map<String, List<String>>> =
LinkedHashMultimap.create();
由于“钻石运营商”,Java 7的压力已经消退。