JDK 9 pre-review of JDK-6850612: Deprecate Class.newInstance since it violates the checked exception language contract
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) 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().
More information about the core-libs-dev