Record component type can be an inner class of a record

Brian Goetz brian.goetz at oracle.com
Tue Mar 24 21:06:07 UTC 2020


It is kind of weird, though, when Bar is not static, since you can't 
create a Bar without having a Foo in hand, and you can't create a Foo 
without a Bar.  You could cheat and do this:

     Foo f = new Foo(null);
     Bar b = f.new Bar(...);
     Foo ff = new Foo(b);

but I doubt anyone will find this technique useful for anything other 
than a puzzler...

On 3/24/2020 4:57 PM, Remi Forax wrote:
> Hi all,
> a record component can use as type a type declared inside the record itself,
> in term of scoping it's like if the record component is part of the internal scope of the record.
>
> record Foo(Bar bar) {
>    class Bar {
>
>    }
> }
>
> I think it's the right behaviour but i was not able to find any reference to that in the spec.
>
> regards,
> Rémi

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20200324/e002c254/attachment.htm>


More information about the amber-spec-experts mailing list