Draft JLS spec for records

Remi Forax forax at univ-mlv.fr
Fri Aug 30 18:53:24 UTC 2019

Hi all, 
iwas fianlly enable to have the time to read the spec, yay ! 

In section 8.10.3:: 
- what if the record implements an interface with a default method that provides an implementation for a getter. Currently this implementation is ignored but i don't know if it's surprising or not. Maybe we should ask explicitly for the user providing an implementation of the getter in that case ? 

So this example should not compile ? 
interface I { 
default int x() { 
return -1; 
record Foo(int x) implements I { } 

In section 8.10.4: 
- why the constructor has to be public, if the record is used inside the class, i don't want someone to be able to instantiate it by reflection. 

public class PublicConstructorProblem { 
private record Foo(int x) { } 

public static Object foo() { 
return new Foo(42); 

public static void main(String[] args) throws Exception { 
Object o = foo(); 
Object o2 = o.getClass().getConstructor(int.class).newInstance(43); 

- a canonical constructor can not have throws clause (from the text of the section) but the grammar in 8.10.2 the CompactConstructor declaration can have a throw clause ? 

- the allowed modifier for a compact constructor should be explicitly listed 
By example, i believe strictfp or synchronized should be allowed 
public record StrictFP() { 
public strictfp StrictFP { } 
but the current prototype rejects that code. 


> De: "Gavin Bierman" <gavin.bierman at oracle.com>
> À: "amber-spec-experts" <amber-spec-experts at openjdk.java.net>
> Envoyé: Vendredi 23 Août 2019 23:25:05
> Objet: Draft JLS spec for records

> A draft language spec for records is available at:

> [
> http://cr.openjdk.java.net/~gbierman/8222777/8222777-20190823/specs/records-jls.html
> |
> http://cr.openjdk.java.net/~gbierman/8222777/8222777-20190823/specs/records-jls.html
> ]

> This spec doesn’t yet discuss varargs records - to appear in the next draft.

> All comments welcomed!

> Thanks,
> Gavin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20190830/37651fbb/attachment.html>

More information about the amber-spec-experts mailing list