]> source.dussan.org Git - sonarqube.git/blob
f8b7e84138ab5bdb3769fe69f0f6fc6815bd5d40
[sonarqube.git] /
1 <p>This code is casting the result of calling toArray() on a collection to a type more specific than Object[], as in:</p>
2 <pre>
3   String[] getAsArray(Collection<String> c) {
4     return (String[]) c.toArray();
5   }
6 </pre>
7 <p>This will usually fail by throwing a ClassCastException. The <code>toArray()</code> of almost all collections return an <code>Object[]</code>. They can't really do anything else, since the Collection object has no reference to the declared generic type of the collection.</p>
8 <p>The correct way to do get an array of a specific type from a collection is to use <code>c.toArray(new String[]);</code> or <code>c.toArray(new String[c.size()]);</code> (the latter is slightly more efficient).</p>
9 <p>There is one common/known exception exception to this. The toArray() method of lists returned by Arrays.asList(...) will return a covariantly typed array. For example, <code>Arrays.asArray(new String[] { "a" }).toArray()</code> will return a String []. FindBugs attempts to detect and suppress such cases, but may miss some.</p>