Scope for JEP 468: Derived record creation
David Alayachew
davidalayachew at gmail.com
Thu Feb 29 23:53:34 UTC 2024
This makes a lot of sense.
Follow-up question - at one point, there was talks about letting mutable
classes (even enums!) have a similar semantics to records, but not
immutable. In the potential future where both are released, does this
feature make more sense, potentially to reach escape velocity?
And let me add that I promise this is not a solution looking for a problem,
I am just trying to gauge the likeliness of a potential future. Out of
curiosity.
On Thu, Feb 29, 2024, 6:37 PM Brian Goetz <brian.goetz at oracle.com> wrote:
> While such a feature is possible, I am not particularly excited about it
> for several reasons. If the goal is "I want to construct using named
> instead of position arguments" (which I think is your goal), it's a pretty
> verbose syntax; a better one would be
>
> new R(a: 1, b: 2)
>
> But that's a much smaller concern. The bigger one is that I don't think
> the language is improved by having a named parameter mechanism for records,
> but for nothing else (not for instantiating class instances, not for
> invoking methods.) While it might seem "better than nothing", having two
> different ways to do something, but one of them only works in narrow
> situations, is as likely to be frustrating than beneficial. If the payoff
> is big enough, then it might be a possibility, but "invocation by parameter
> name" is nowhere near that bar.
>
> Finally, if it works for records but not for classes, it makes it harder
> to refactor from records to classes, since there will be use sites that
> have to be adjusted.
>
> So I think for the time being, the answer is "no", though if we run out of
> things to work on, we might reconsider.
>
>
> On 2/29/2024 4:34 PM, Swaranga Sarma wrote:
>
> The JEP looks really promising. However I am wondering if there will be a
> separate JEP for creating new records from scratch with similar syntax.
>
> The current JEP states that its goals are to enable creating records from
> an existing record and for that it seems sufficient. But I would also love
> to be able to create new records from scratch using the same syntax.
> Something like:
>
> var circle = new Circle with {
> radius = 0.5f;
> center = new Center with {
> x = 0;
> y = -1;
> z = 8;
> };
> };
>
> Originally I had asked Brian Goetz about record literals and they seemed
> like a possibility but withers seem like a more general feature so I am
> hoping something like this would be supported in the future.
>
> Regards
> Swaranga Sarma
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-dev/attachments/20240229/21389ed8/attachment-0001.htm>
More information about the amber-dev
mailing list