如何使用来自哈希集的参数调用方法?
How to Call method with arguments coming from a hashset?
static public void Configure( Activity activity,String client_options,
String app_id, String... zone_ids )
我有一个最多包含 500 个元素的哈希集。
如何使用散列集的每个元素作为满足 zone_ids 参数的参数来调用 Configure()?
不幸的是,您需要将集合转换为数组 - 这很容易做到,但效率很低:
Configure(activity, options, appId, zoneIdSet.toArray(new String[0]));
可以将 new String[0]
替换为 new String[zoneIdSet.size()]
以提高效率。你必须传入一个数组来绕过 Java 的类型擦除,这样它才能构建一个正确类型的数组。
您说过您无法控制该方法 - 如果您可以,那么有两个重载会更干净:
public void configure(Activity activity, String clientOptions,
String appId, Iterable<String> zoneIds) {
// Actual work here
}
// Convenience overload
public void configure(Activity activity, String clientOptions,
String appId, Iterable<String> zoneIds) {
configure(activity, clientOptions, appId, Lists.asList(zoneIds));
}
然后您只需 "wrap" 列表中的数组,使其成为 Iterable<String>
。
static public void Configure( Activity activity,String client_options,
String app_id, String... zone_ids )
我有一个最多包含 500 个元素的哈希集。
如何使用散列集的每个元素作为满足 zone_ids 参数的参数来调用 Configure()?
不幸的是,您需要将集合转换为数组 - 这很容易做到,但效率很低:
Configure(activity, options, appId, zoneIdSet.toArray(new String[0]));
可以将 new String[0]
替换为 new String[zoneIdSet.size()]
以提高效率。你必须传入一个数组来绕过 Java 的类型擦除,这样它才能构建一个正确类型的数组。
您说过您无法控制该方法 - 如果您可以,那么有两个重载会更干净:
public void configure(Activity activity, String clientOptions,
String appId, Iterable<String> zoneIds) {
// Actual work here
}
// Convenience overload
public void configure(Activity activity, String clientOptions,
String appId, Iterable<String> zoneIds) {
configure(activity, clientOptions, appId, Lists.asList(zoneIds));
}
然后您只需 "wrap" 列表中的数组,使其成为 Iterable<String>
。