为什么我需要强制转换myCollection.toArray(new String [0])的结果

时间:2018-08-20 14:40:03

标签: java generics

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])的结果,但是我想知道为什么。我相信方法的通用性可以避免这种情况。

0 个答案:

没有答案