While I disagree with the choice made (one of Java's strengths is a
little bit of extra verbosity), I am happy if it is consistent. Based
on the links I provided, clearly Project Lambda has a long way to go
to meet that consistency, so it clearly hasn't been a firm
recommendation up until now.

java.time will of course be adapted to match.

Stephen


On 9 April 2013 12:57, David Holmes <david.hol...@oracle.com> wrote:
> All of the lambda-related work has now moved (or is moving) to #1. No public
> on interface methods as has been the recommendation since day one.
>
>> I find this inconsistency troubling. Its time for a firm
>> recommendation to be made as to Oracle's preferred coding standard.
>
>
> I agree because I see that java.time is using #2.
>
>
>> I'm of the opinion that moving code to #3, explicit use of "public"
>> will serve Java better in the long run. I find #1 particularly
>> troubling, as it means a default method (which looks very like a
>> normal method) looks like it is package scoped when I read the source
>> code.
>
>
> If/when non-public methods are allowed in interfaces then we should probably
> make things explicit, in my opinion. I don't find anything troubling about
> not having public of interface methods - default or abstract.
>
> David
> -----
>
>
>> (this affects the Map changes webrev)
>> Stephen
>>
>>
>>
>> On 8 April 2013 19:07, Mike Duigou <mike.dui...@oracle.com> wrote:
>>>
>>> Hello all;
>>>
>>> This is a combined review for the new default methods on the
>>> java.util.Map interface being added for the JSR-335 lambda libraries. The
>>> reviews are being combined because they share a common unit test.
>>>
>>> http://cr.openjdk.java.net/~mduigou/JDK-8010122/0/webrev/
>>>
>>> 8004518: Add in-place operations to Map
>>>   forEach()
>>>   replaceAll()
>>>
>>> 8010122: Add atomic operations to Map
>>>   getOrDefault()
>>>   putIfAbsent()          *
>>>   remove(K, V)
>>>   replace(K, V)
>>>   replace(K, V, V)
>>>   compute()              *
>>>   merge()                *
>>>   computeIfAbsent()      *
>>>   computeIfPresent()     *
>>>
>>> The * operations treat null values as being absent. (ie. the same as
>>> there being no mapping for the specified key).
>>>
>>> The default implementations provided in Map are overridden in HashMap for
>>> performance purposes, in Hashtable for atomicity and performance purposes
>>> and in Collections for atomicity.
>>>
>>> Mike
>>>
>

Reply via email to