RFR(s): 8060192: Add default method Collection.toArray(generator)
David Lloyd
david.lloyd at redhat.com
Tue Dec 5 13:59:33 UTC 2017
On Tue, Dec 5, 2017 at 1:03 AM, Remi Forax <forax at univ-mlv.fr> wrote:
> 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.
The signature of the proposed generator is
> public <T> T[] toArray(IntFunction<T[]> generator)
So I don't think that anything has really changed in this regard; T
can still be unrelated to E.
That said, sending in a constant String[0] is probably just as good as
a generator, or better (in my naive estimation the tradeoff is a >0
comparison versus an interface method dispatch), than an i -> new
String[i] unless some kind of benchmark would appear which disproves
that hypothesis.
--
- DML
More information about the core-libs-dev
mailing list