RFR(s): 8060192: Add default method Collection.toArray(generator)

Remi Forax forax at univ-mlv.fr
Tue Dec 5 07:03:47 UTC 2017

Hi Martin,

----- Mail original -----
> De: "Martin Buchholz" <martinrb at google.com>
> À: "Stuart Marks" <stuart.marks at oracle.com>
> Cc: "core-libs-dev" <core-libs-dev at openjdk.java.net>
> Envoyé: Mardi 5 Décembre 2017 05:26:02
> Objet: Re: RFR(s): 8060192: Add default method Collection.toArray(generator)

> The needToWorkAround6260652 changes ought to be in a separate changeset.
> The biggest question is whether Collection.toArray(generator) pulls its
> weight, especially in view of
> https://shipilev.net/blog/2016/arrays-wisdom-ancients.
> I rarely want to dump elements into a typed array.  Dumping into Object[]
> with toArray() is just fine for me (but I'm a biased core library
> developer).

Dumping an ArrayList<String> into an array of String is fairly frequent, i think.

The main issue with the current API, <T> T[] toArray(T[] array), is that T can be unrelated to E (the type of the element in the collection) so one can write
  ArrayList<Integer> list = ...
  String[] array = list.toArray(new String[0]); 
it may even works if the list is empty.

It's getting worst if E and T can be a primitive type (with valhalla), because toArray(T[]) as to support all combinations.

So in my opinion, introducing toArray(generator) is a step in the right direction.


More information about the core-libs-dev mailing list