JDK 9 pre-review of JDK-6850612: Deprecate Class.newInstance since it violates the checked exception language contract

Peter Levart peter.levart at gmail.com
Thu Apr 28 21:20:15 UTC 2016

On 04/28/2016 09:06 PM, Jason Mehrens wrote:
> Hi Peter,
>> As mentioned, Class.newInstance() has a special cache for constructor
>> and caller that speeds up repeated invocations from the same caller by
>> skipping access checks.
> I'm sure I'm missing something obvious related to performance or security but, couldn't the exact same 'cachedConstructor' field be used for caching  Class.getConstructor(new Class[0]) as long as a constructor copy is returned?
> That way the recommended workaround is near the same performance.

This would only speed up the lookup part (optimization for looking up 
no-arg constructor - perhaps this could be a special field in 
Class.ReflectionData), but returning a copy would force re-evaluation of 
access checks which can now be skipped if the caller remains the same in 
consecutive invocations to Class.newInstance().

Regards, Peter

More information about the core-libs-dev mailing list