Type safety bug for Spliterators.spliterator
Martin Buchholz
martinrb at google.com
Mon Feb 24 13:23:40 PST 2014
The following program compiles, but IMO clearly should not:
import java.util.*;
public class UncheckedSpliterator {
public static void main(String[] args) throws Throwable {
String[] stooges = { "Larry", "Moe", "Curly" };
Spliterator<Integer> s = Spliterators.spliterator(stooges, 0);
}
}
The signature of Arrays.spliterator is
public static <T> Spliterator<T> spliterator(T[] array)
while the signature of Spliterators.spliterator is
public static <T> Spliterator<T> spliterator(Object[] array,
int
additionalCharacteristics)
The second signature should take a T[] like the first,
even though the second signature happens to be convenient for collections
class implementers.
(Why are these in two separate places anyways?)
More information about the lambda-dev
mailing list