> De: "Brian Goetz" <[email protected]>
> À: "Guy Steele" <[email protected]>
> Cc: "amber-spec-experts" <[email protected]>
> Envoyé: Vendredi 24 Avril 2020 21:08:02
> Objet: Re: Possible records tweak

>> Not a bad idea, but here are two and a half alternatives we could consider:

>> (1) Simply ban use of “this” within a compact constructor. This might seem 
>> like
>> overkill, but it is very easy to explain: the keyword “this” is not available
>> in a compact constructor, period. Because the argument names shadow the field
>> names, you don’t have access to the fields at all in a compact constructor. 
>> If
>> you don’t like it, write a non-compact constructor.

> That's a nice clean way to do it, because under this (heh) model, `this` is
> useless -- can't read the fields (they're DU), can't write them (cause I say
> so), shouldn't call instance methods anyway (because the object is 
> uninitilized
> and therefore may be in an invalid state), and you shouldn't pass `this` to
> alien code (because that undermines the final field guarantees of the JMM.) So
> if its useless, just don't utter it.
It's bold but i like 'this' rule. Easy to explain, easy to remember. 

> (Which, in hindsight, might have been a good rule for _all_ constructors, if
> there was another way to initialize the fields. Surely would have eliminated
> much verifier complexity.)
accessing to the identity hashcode or the current class inside a constructor is 
valid (i believe) but those are a corner cases. 

Rémi 

Reply via email to