defaultvalue and enclosing instances

Brian Goetz brian.goetz at oracle.com
Wed Sep 19 02:13:05 UTC 2018


We disallow no arg ctor, right?  So what if the no arg ctor always returns default value, and then you can say outer.new inner()?

Sent from my iPad

> On Sep 14, 2018, at 9:26 PM, Srikanth <srikanth.adayapalam at oracle.com> wrote:
> 
> 
> 
>> On Friday 14 September 2018 09:47 PM, Victor Nazarov wrote:
>> 
>> 
>> пт, 14 сент. 2018 г., 19:06 John Rose <john.r.rose at oracle.com <mailto:john.r.rose at oracle.com>>:
>> 
>>    On Sep 14, 2018, at 1:32 AM, Srikanth
>>    <srikanth.adayapalam at oracle.com
>>    <mailto:srikanth.adayapalam at oracle.com>> wrote:
>>    >
>>    > ... (d) other solutions ...
>> 
>>    The simplest one comes to mind:  Allow T.default to have a default
>>    up-reference
>>    of null, as a special case for inner values.  Referring to the
>>    outer instance from
>>    a default inner instance will thus fail with NPE.  "It hurts when
>>    I do this, Doctor"
>>    "Then don't do that."
>> 
>> 
>> But this means that you can't use enclosed value type instances.
> 
> Not quite. Properly enclosed value instances can be created via the classic constructor notation: e.g:
> new Outer().new InnerValue();
> 
> Srikanth
> 



More information about the valhalla-dev mailing list