----- Mail original -----
> De: "Stuart Marks" <[email protected]>
> À: "Remi Forax" <[email protected]>
> Cc: "core-libs-dev" <[email protected]>
> 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