构造函数LinkedHashMultimap不可见

时间:2012-11-15 20:02:52

标签: java guava multimap

以下代码无法编译

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;
单独

不会导致编译错误......很奇怪

2 个答案:

答案 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的压力已经消退。