【问题标题】:Can't initialize ArrayListMultimap; due to nesting?无法初始化 ArrayListMultimap;由于嵌套?
【发布时间】:2017-01-05 10:33:12
【问题描述】:
private ArrayListMultimap<Integer, ArrayList<ArrayList<Point2d>>> detectedAgentPositions;

上面的代码没有给我任何错误,即一切都被整齐地编写和导入等等。但是当我尝试像这样初始化detectedAgentPositions 时:

private ArrayListMultimap<Integer, ArrayList<ArrayList<Point2d>>> detectedAgentPositions
        = new ArrayListMultimap<Integer, ArrayList<ArrayList<Point2d>>>();

我收到以下错误:

没有找到适合 ArrayListMultimap 的构造函数(无参数) 构造函数 ArrayListMultimap.ArrayListMultimap(int,int) 不适用 (实际参数列表和形式参数列表的长度不同) 构造函数 ArrayListMultimap.ArrayListMultimap(Multimap>) 不适用 (实际参数列表和形式参数列表的长度不同)

这里有什么问题?

【问题讨论】:

  • ArrayListMultiMapPoint2d 来自哪里??
  • 改用ArrayListMultimap.create

标签: java initialization


【解决方案1】:

如果您的类ArrayListMultimap 来自Google Common,它不起作用仅仅是因为构造函数是私有,因此您不能直接调用new ArrayListMultimap&lt;Integer, ArrayList&lt;ArrayList&lt;Point2d&gt;&gt;&gt;(),只需调用ArrayListMultimap.create() 改为下一个:

private ArrayListMultimap<Integer, ArrayList<ArrayList<Point2d>>> detectedAgentPositions 
    = ArrayListMultimap.create();

【讨论】:

    【解决方案2】:

    更好的使用接口,看下面的代码:

    Multimap<Integer, ArrayList<ArrayList<Point2d>>> detectedAgentPositions = ArrayListMultimap.create();
    

    阅读这里https://google.github.io/guava/releases/19.0/api/docs/com/google/common/collect/ArrayListMultimap.html

    【讨论】:

      猜你喜欢
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多