Collection#toArray(T[])
签名如下
public <T> T[] toArray(T[] a)
大多数时候,我都会编写这段代码,并且一切正常:
Collection<String> myCollection = Arrays.asList("foo", "bar");
String[] myArray = myCollection.toArray(new String[0]);
今天,由于某些原因,我无法使用“常规” Collection<String>
,然后我想到了:
Collection myCollection = someNonGenericResult();
String[] myArray = myCollection.toArray(new String[0]);
在这种情况下,我收到此编译错误:
不兼容的类型:java.lang.Object []无法转换为java.lang.String []
我知道我可以转换myCollection.toArray(new String[0])
的结果,但是我想知道为什么。我相信方法的通用性可以避免这种情况。