我写了一个从 Map
中获取随机值的方法。我首先获取 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 中的一个已知限制并且有很好的理由。所以这是不可能的:V[] array = new V[values.size()];
另见:
What's the reason I can't create generic array types in Java?
关于java - 如何将 "check"强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33165290/