Draft JLS spec for records - local types
Remi Forax
forax at univ-mlv.fr
Sun Oct 6 15:29:44 UTC 2019
----- Mail original -----
> De: "Brian Goetz" <brian.goetz at oracle.com>
> À: "Peter Levart" <peter.levart at gmail.com>
> Cc: "amber-spec-experts" <amber-spec-experts at openjdk.java.net>
> Envoyé: Dimanche 6 Octobre 2019 17:06:14
> Objet: Re: Draft JLS spec for records - local types
>> When reading the spec, the following caught my attention:
>>
>> """A nested record type is implicitly static. It is permitted for the
>> declaration of a nested record type to redundantly specify the static
>> modifier.
>>
>> This implies that it is impossible to declare a record type in the body of
>> an inner class (8.1.3), because an inner class cannot have static members
>> except for constant variables.
>
> Sharp eye!
>
> Yes, this is sad. There are three ways to go:
>
> - Don’t make records implicitly static.
> - Allow static members in inner classes.
> - Don’t allow records in inner classes, at least for now, and do one of the
> others later.
>
> I don’t like the first one; inner records violate the spirit of records, which
> is their entire representation, API, and behavior is derived from their state
> descriptor. An inner record would have a hidden extra component, and this
> would raise uncomfortable questions like “how does it play into the equally
> calculation.” Better to say records are what they look like, which makes them
> implicitly static.
yes,
an implicit extra component also doesn't play well with the pattern matching extraction.
Rémi
More information about the amber-spec-experts
mailing list