The implementation of default methods (original) (raw)

Doug Lea dl at cs.oswego.edu
Sat Dec 15 04:01:29 PST 2012


On 12/15/12 01:50, David Holmes wrote:

2. Document "The default implementation behaves as if..." (Or whatever Doug's proposed wording is.)

In j.u.c, we always say "is behaviorally equivalent to" but I dropped the "behaviorally" in Map candidate because someone once told me it was overly pedantic :-)

Little style notes:

  1. These seem to be more easily decodable when written in "third person" user-centered form. As in, for Map.putIfAbsent:

    /**

    • If the specified key is not already associated with a value,
    • associates it with the given value. The default implementation
    • is equivalent to, for this {@code map}:
    •  {@code
    • if (!map.containsKey(key))
    • return map.put(key, value);
    • else
    • return map.get(key);}

...

  1. Often, little code snippets like this are the simplest way to say what you mean. But there's no strict need for this. Sometimes words describing effects are simpler. Or mixtures. I did this among other places in Map.merge to avoid the messiness of putting a retry loop in the code snippet.

-Doug



More information about the lambda-libs-spec-experts mailing list