0

以下代码无法编译

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;

单独不会导致编译错误...奇怪

4

2 回答 2

6

使用静态create方法获取 LinkedHashMultimap 的新实例。

    LinkedHashMultimap<String, String> p = LinkedHashMultimap.create();  
于 2012-11-15T20:04:15.020 回答
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 中,由于“钻石运算符”,压力已经消退。

于 2012-11-15T20:11:18.730 回答