如何处理动态变量号。 java 中的参数?

How to handle dynamically variable no. of parameters in java?

从googleapi获取路线指示的请求如下。

DirectionsApi.newRequest(getGeoContext())
                    .mode(TravelMode.DRIVING)
                    .origin(origin)
                    .destination(destination)
                    .waypoints(getWaypointsString(waypoints))
                    .departureTime(now)
                    .optimizeWaypoints(true)
                    .await();

.waypoints 是一个参数数量可变的方法:

public DirectionsApiRequest waypoints(java.lang.String... waypoints)

现在我的问题是我必须动态更新我的路线,因此,我的路线中 waypoints 的数量可能会有所不同。我可以像这样手动处理:

.waypoints(Latlng1)
.waypoints("Latlng1","Latlng2") 

无论如何我可以为此编写一个通用方法或者如果我不知道我会得到多少 waypoints 如何处理它?

... 符号只是传递数组的一种隐藏方式。 所以实际上在 waypoints 方法中你有一个参数 java.lang.String[] waypoints,它是一个数组。所以,你可以找出它的长度,然后一个一个地读取它的元素:

public DirectionsApiRequest waypoints(java.lang.String... waypoints) {
   int numOfWayPoints = waypoints.length;
   for (int i = 0 ; i < numOfWayPoints ; i++) {
      doSomethingWithTheWayPoint(waypoints[i]);
   }
   // or
   for (java.lang.String waypoint : waypoints) {
      doSomethingWithTheWayPoint(waypoint);
   }
}

要调用这样的方法,您可以反向执行:只需传递一个数组作为最后一个参数:

   java.lang.String[] waypoints = {"Ltlng1", "Ltlng2"}; // fill the array
   .... 
   .waypoints(waypoints); // call the method, passing the array instead of a list of parameters

   // or
   ArrayList<java.lang.String> waypointsList = new ArrayList<>();
   waypointsList.add("Ltlng1");
   waypointsList.add("Ltlng2"); 
   // etc
   .... 
   .waypoints(waypointsList.toArray(new java.lang.String[])); // call the method, passing the array of strings obtained from a list