【问题标题】:java/processing return ArrayList throws: This method must return a result of Type ArrayListjava/processing return ArrayList throws: 这个方法必须返回一个Type ArrayList的结果
【发布时间】:2019-07-03 07:23:05
【问题描述】:

我有这个函数 makeAirportManagers() 应该返回一个 ArrayList <MarkerManager> 所有必需的变量 map, countryMarkersairportMarkers 都是全局的(脏处理风格)。

ArrayList  makeAirportManagers(){
  ArrayList  managers = new ArrayList();
  for (Marker country : countryMarkers){
    MarkerManager currentMarkerManager = new MarkerManager();
    for (Marker airport : airportMarkers){
      Location airportLocation = airport.getLocation();
      ScreenPosition airportScreenPos = map.getScreenPosition(airportLocation);
      if(country.isInside(map, airportScreenPos.x, airportScreenPos.y)){
        currentMarkerManager.addMarker(airport);
      }
    }
    currentMarkerManager.disableDrawing();
    managers.add(currentMarkerManager);
    map.addMarkerManager(currentMarkerManager);
    airportManagersBuild = true;
    return managers;
  }
}

控制台打印:这个方法必须返回一个ArrayList类型的结果

我真的不知道为什么!

在另一个版本的代码中,我计算了managers 的项目,以确保它不为空,并且得到了预期的 178 个项目。

我正在使用 Processing 1.5.1,因为我正在使用 Unfolding 库。

【问题讨论】:

    标签: java processing


    【解决方案1】:

    您的return 方法位于for 循环内。你必须把它移到下一行。

    【讨论】:

    • 我真是瞎了眼!非常感谢!
    【解决方案2】:

    如果 countryMarkers 中没有元素,您将永远无法到达return managers 行,并且您的方法将不会返回任何内容。

    即使您知道容器永远不会为空,Java 编译器也不会。因此你的错误。

    【讨论】:

    • 谢谢,但countryMarkers 不为空。
    • 你知道的。不是你的编译器。你的编译器比你我更正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2013-08-21
    • 2011-06-19
    • 2015-01-29
    • 1970-01-01
    • 2012-05-27
    • 2013-12-18
    相关资源
    最近更新 更多