【发布时间】:2011-03-10 04:32:29
【问题描述】:
我有一张非常简单的地图
private Map<String,T> map = Collections.synchronizedSortedMap(new TreeMap<String,T>());
我想定义如下方法
public T[] values(){
return (T[])map.values().toArray();
}
显然,我最终遇到了未经检查的演员表问题...我的问题是我无法调用 toArray(new T[size])。
我应该怎么做才能避免这个警告(不使用@SuppressedWarning)
谢谢
【问题讨论】:
-
为什么不能调用 toArray(new T[size])??.
-
在 Java 中你不能创建一个通用的 T 数组 => 你的代码不会编译
-
这将使调用代码在运行时崩溃,因为 toArray() 本身返回一个 Object[] 数组,而泛型转换是一个 noop。
标签: java generics map casting type-safety