On Thu, 12 Jan 2023 18:37:06 GMT, Archie L. Cobbs <d...@openjdk.org> wrote:

>> I guess what I'm thinking about:
>> 
>> class Foo {
>>     private Foo() {
>>         m(this);
>>     }
>>     
>>     public void m() { ... } // overridable
>>     
>>     static Foo makeFoo() { return new Foo(); }
>> }
>
>> I guess what I'm thinking about:
> 
> No leak is possible in that example.
> * `new Foo()` creates an instance of `Foo` (not a subclass of `Foo`) 
> therefore `m()` is not overridden
> * Any subclass of `Foo` that may exist in the outside world cannot use the 
> `Foo()` constructor that leaks because it's private

but what if `m` is a static method in a separate compilation unit? Should it be 
able to observe a partially initialized Foo?

-------------

PR: https://git.openjdk.org/jdk/pull/11874

Reply via email to