-
CSR
-
Resolution: Approved
-
P4
-
None
-
behavioral
-
minimal
-
There are no implementation changes; this doc-comment change removes internal inconsistencies between the code snippet and its prose counterpart in the method specification.
-
Java API
-
SE
Summary
The implementation requirement of Map::compute
does not match its default implementation. Besides, it has some other minor issues. We should fix it.
Problem
The documentation of the implementation requirements for Map::compute
has the following problems:
- It doesn't match its default implementation.
- It lacks of the
return
statements for most of theif
-else
cases. - The indents are 3 spaces, while the convention is 4 spaces.
- The
if
-else
is overly complicated and can be simplified. - The surrounding prose contains incorrect statements.
Solution
Rewrite the documentation of Map::compute
to match its default implementation and solve the above mentioned problems.
Specification
diff --git a/src/java.base/share/classes/java/util/Map.java b/src/java.base/share/classes/java/util/Map.java
index b1de34b42a5..b30e3979259 100644
--- a/src/java.base/share/classes/java/util/Map.java
+++ b/src/java.base/share/classes/java/util/Map.java
@@ -1107,23 +1107,17 @@ public interface Map<K, V> {
*
* @implSpec
* The default implementation is equivalent to performing the following
- * steps for this {@code map}, then returning the current value or
- * {@code null} if absent:
+ * steps for this {@code map}:
*
* <pre> {@code
* V oldValue = map.get(key);
* V newValue = remappingFunction.apply(key, oldValue);
- * if (oldValue != null) {
- * if (newValue != null)
- * map.put(key, newValue);
- * else
- * map.remove(key);
- * } else {
- * if (newValue != null)
- * map.put(key, newValue);
- * else
- * return null;
+ * if (newValue != null) {
+ * map.put(key, newValue);
+ * } else if (oldValue != null || map.containsKey(key)) {
+ * map.remove(key);
* }
+ * return newValue;
* }</pre>
*
* <p>The default implementation makes no guarantees about detecting if the
- csr of
-
JDK-8247402 Documentation for Map::compute contains confusing implementation requirements
-
- Resolved
-