Enhance Map, List, and Set such that these interfaces extend Function, IntFunction, and Predicate, respectively
Ralf Spöth
ralf.spoeth at gmail.com
Thu Sep 15 16:16:58 UTC 2022
Thanks for answering that quickly!
Regards
Ralf
> Am 15.09.2022 um 17:34 schrieb Brian Goetz <brian.goetz at oracle.com>:
>
>
>
> On 9/15/2022 11:19 AM, Ralf Spöth wrote:
>> Dear all,
>>
>> I just stumbled about some frequent uses of collections as filters and mapping functions, and I am wondering whether it's possible to enhance the core collection interfaces Map, List, and Set:
>>
>> (please forgive lousy syntax hereinafter)
>>
>> interface Map<K, V> extends Function<K, V> {
>> default V apply(K k) {return get(k);}
>> }
>>
>> interface List<T> extends IntFunction<T> {
>> default T apply(int index) { return get(I);}
>> }
>>
>> interface Set<T> extends Predicate<T> {
>> default boolean test(T t) {return contains(t);}
>> }
>
> These were considered during JSR 335. They are conceptually sensible, but we decided against it for two reasons:
>
> - Adding these methods to highly general interfaces with many implementations extant could introduce conflicts, where someone's `MySet` could have an incompatible "test" method;
>
> - The functionality you want is easy accessed via method references: map::get converts to Function (and map::contains to Predicate); list::get conversions to IntFunction; set::contains to Predicate.
>
>
More information about the java-se-spec-comments
mailing list