RFR [lworld] 8239929: Object.newIdentity() replacement for new Object()

Brian Goetz brian.goetz at oracle.com
Thu Feb 27 23:15:55 UTC 2020


Agree we should deprecate. In this case removal will actually be downgrading to protected.  

Sent from my MacBook Wheel

> On Feb 27, 2020, at 5:40 PM, Mandy Chung <mandy.chung at oracle.com> wrote:
> 
> I think we should add @Deprecated in the Object constructor.
> 
> Otherwise, looks fine.
> 
> Mandy
> 
>> On 2/25/20 11:20 AM, Roger Riggs wrote:
>> Please review the static factory of an IdentityObject to replace "new Object()"
>> as mentioned in [1].
>> 
>> No replacements proposed yet.  There are 504 instances of "new Object()" in JDK modules.
>> @@ -38,15 +38,36 @@
>> 
>>   */
>>  public class Object {
>> 
>>      /**
>>       * Constructs a new object.
>> +     * @apiNote {@link Object#newIdentity} should be used instead of {@code new Object()}.
>>       */
>>      @HotSpotIntrinsicCandidate
>>      public Object() {}
>> 
>>      /**
>> +     * Constructs a new Object implementing the IdentityObject interface.
>> +     * The object is a unique IdentityObject suitable for all purposes
>> +     * that previously for which {@code new Object{}} was used including synchronization,
>> +     * mutexes and unique placeholders.
>> +     *
>> +     * @return a new Object implementing the IdentityObject interface
>> +     * @since Valhalla
>> +     */
>> +    public static IdentityObject newIdentity() {
>> +        return new IdentityInstance();
>> +    }
>> +
>> +    /**
>> +     * IdentityInstance replaces plain {@code new Object()}.
>> +     */
>> +    private final static class IdentityInstance implements IdentityObject {
>> +        private IdentityInstance() {}
>> +    }
>> +
>> 
>> 
>> As a Webrev:
>> http://cr.openjdk.java.net/~rriggs/webrev-object-newinstance-8239929/
>> 
>> Thanks, Roger
>> 
>> [1] http://cr.openjdk.java.net/~briangoetz/valhalla/sov/02-object-model.html
> 



More information about the valhalla-dev mailing list