[External] : Re: Minor improvement to anonymous classes
John Rose
john.r.rose at oracle.com
Tue Aug 3 05:06:20 UTC 2021
+1 on removing unused this$1
> On Jul 31, 2021, at 12:51 PM, Brian Goetz <Brian.Goetz at oracle.com> wrote:
>
>
>
>> Another option that gets some of the benefit and doesn't require a spec change is to omit the reference to the enclosing instance if it is unused. We've been doing that successfully for a few years at Google. There was some minor compatibility impact to code using reflection to access the synthetic field that stores the reference to the enclosing instance, but that was very rare, and the benefit is that it avoids some memory leaks.
>
> The people who would complain are in a pretty weak position:
>
> - The field is private and synthetic; you shouldn't be reflecting on it at all;
> - The field name is an implementation detail of the compiler, and not specified, so you shouldn't even pretend you know its name;
> - If its your class, the easy thing to do is add an accessor, so the only people who would complain are those that are breaking into classes they don't control.
>
> I think it is reasonable for the language to infer whether the enclosing instance is "captured" by the inner class or not, and that's consistent with how lambdas behave.
More information about the amber-spec-experts
mailing list