RFR: 8275013: Improve discussion of serialization method declarations in java.io.Object{Input, Output}Stream

Roger Riggs rriggs at openjdk.java.net
Thu Oct 14 14:50:59 UTC 2021


On Sun, 10 Oct 2021 20:25:43 GMT, Joe Darcy <darcy at openjdk.org> wrote:

> The java.io.ObjectInputStream and java.io.ObjectOuputStream classes are part of the serialization feature. These classes contain brief descriptions of some of the methods serializable classes can define to interact with the serialization mechanism, readObject, readObjectNoData, and writeObject. These descriptions are not entirely consistent with one another and at least one is arguably misleading.
> 
> This PR makes the brief discussion the same in both classes and addresses the misleading point: the throws clauses of the methods will not effect whether or not the methods are found by serialization, but throwing unchecked exceptions not declared in the standard signatures is ill-advised. (The current implementation looks up the methods by name using core reflection; the method modifiers are checked to match but the throws information is not.)
> 
> Please also review the corresponding CSR : https://bugs.openjdk.java.net/browse/JDK-8275014

src/java.base/share/classes/java/io/ObjectOutputStream.java line 105:

> 103:  * declared to throw checked exceptions consistent with these
> 104:  * signatures.
> 105:  *

Why the mix of 'should' vs 'must' in this paragraph? The change above downgrades a 'must' to a 'should'.
The original text and the java serialization spec use 'must'.  Other JDK doc uses 'should' as being more readable but is supposed to mean 'must'.

-------------

PR: https://git.openjdk.java.net/jdk/pull/5883


More information about the core-libs-dev mailing list