JDK 14 RFR of JDK-8236695: java.lang.Record should be declared with an explicit constructor
Paul Sandoz
paul.sandoz at oracle.com
Mon Jan 6 23:46:03 UTC 2020
+1
Paul.
> On Jan 6, 2020, at 3:22 PM, Joe Darcy <joe.darcy at oracle.com> wrote:
>
> Hello,
>
> The initial implementation of java.lang.Record uses a default constructor; an explicit constructor should be added instead. Please review the code change and CSR for this:
>
> JDK-8236695: java.lang.Record should be declared with an explicit constructor
> CSR: https://bugs.openjdk.java.net/browse/JDK-8236699
> http://cr.openjdk.java.net/~darcy/8236695.0/
>
> Patch below. It is sufficient for the constructor to be declared as protected rather than public; the serialization tests and other records test pass with this change.
>
> Thanks,
>
> -Joe
>
> --- old/src/java.base/share/classes/java/lang/Record.java 2020-01-06 13:47:31.740871560 -0800
> +++ new/src/java.base/share/classes/java/lang/Record.java 2020-01-06 13:47:31.552777567 -0800
> @@ -91,6 +91,11 @@
> essentialAPI=true)
> public abstract class Record {
> /**
> + * Constructor for record classes to call.
> + */
> + protected Record() {}
> +
> + /**
> * Indicates whether some other object is "equal to" this one. In addition
> * to the general contract of {@link Object#equals(Object)},
> * record classes must further participate in the invariant that when
>
More information about the core-libs-dev
mailing list