[External] : Re: ReversibleCollection proposal
forax at univ-mlv.fr
forax at univ-mlv.fr
Thu Apr 22 12:23:51 UTC 2021
----- Mail original -----
> De: "Stuart Marks" <stuart.marks at oracle.com>
> À: "Remi Forax" <forax at univ-mlv.fr>
> Cc: "core-libs-dev" <core-libs-dev at openjdk.java.net>
> Envoyé: Mercredi 21 Avril 2021 20:53:25
> Objet: Re: [External] : Re: ReversibleCollection proposal
> On 4/19/21 2:01 PM, Remi Forax wrote:
>> ----- Mail original -----
>> Thinking a little bit about your proposal,
>> introducing an interface right in the middle of a hierarchy is not a backward
>> compatible change
>> (you have an issue when the compiler has to use the lowest upper bound).
>>
>> By example
>> void m(List<Collection<String>> list) { ... }
>>
>> var list = List.of(new LinkedHashSet<String>(), List.of("foo"));
>> m(list); // does not compile anymore
>>
>> currently the type of list is List<Collection<String>> but with your proposal,
>> the type will be List<ReversibleCollection<String>>
>
> Yes, interesting. Not too difficult to fix though. Either change the method
> declaration to
>
> void m(List<? extends Collection<String>> list)
>
> or change the 'var' to an explicit declaration of List<Collection<String>>.
or specify the type argument in between '.' and 'of'
var list = List.<Collection<String>>of(new LinkedHashSet<String>(), List.of("foo"));
anyway, the issue here is that adding ReversibleCollection is a source breaking change,
which significantly raises the bar to add this interface.
>
> s'marks
Rémi
More information about the core-libs-dev
mailing list