【发布时间】:2015-10-16 07:55:30
【问题描述】:
我编写了一个从Map 获取随机值的方法。我首先获取了地图中的所有值,然后使用Random 对象获取随机值。方法如下:
public static <K, V> V getRandomValInMap (Map<K, V> map) {
Collection<V> values = map.values ();
V[] array = (V[])values.toArray ();
return array[random.nextInt (array.length)];
}
在表达式中
(V[])values.toArray ()
Android Studio 说这是“从Object[] 到V[] 的未经检查的转换”。所以我想这有点“冒险”。我尝试使用 toArray 的另一个重载:
V[] array = new V[values.size()];
array = values.toArray (array);
我猜这不是您使用重载的方式,因为编译器错误提示我无法初始化 V。
所以我想也许我应该使用第一种方法。但是我如何“检查”演员以取消警告?
或者,您可以告诉我如何正确使用toArray(T[] array) 重载。
【问题讨论】:
标签: java generics dictionary android-studio casting