[records] A reflection API to get the primary constructor?
Brian Goetz
brian.goetz at oracle.com
Wed Sep 25 16:19:32 UTC 2019
Clearly, this has to be possible. For example, serialization will want
to find the canonical constructor. Currently, it does so with a stream
expression like you present below; with the new API, the structure of
the stream expression changes slightly, but it is basically the same game.
We surely _can_ expose some reflective call like
Class::getCanonicalRecordConstructor(). The question is whether this is
worth having yet another entry point in a class that is already quite
crowded, or ask frameworks to do as you illustrate below. It's not
entirely clear whether it carries its weight, as opposed to putting an
example in the spec for getRecordComponents().
On 9/25/2019 11:44 AM, Tagir Valeev wrote:
> Hello!
>
> Speaking of the reflection API, do we have a way to get a primary
> constructor of a record class? Sure we can do something like
>
> cls.getConstructor(Arrays.stream(cls.getRecordAccessors()).map(Method::getReturnType).toArray())
>
> But it looks like a bit verbose. Something like
> cls.getPrimaryConstructor() (throwing on non-records) looks better.
> What do you think?
>
> With best regards,
> Tagir Valeev.
More information about the amber-spec-experts
mailing list