On Wed, 22 May 2024 09:39:50 GMT, Aleksey Shipilev <sh...@openjdk.org> wrote:
>> Improve `java/lang/reflect/Method.java` by eliminating needless cloning of >> Class[0] instances. This cloning is intended to prevent callers from >> changing array contents, but smany Methods have zero exceptions or zero >> parameters, and returning the original `Class[0]` is sufficient. > > src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java line > 249: > >> 247: * the original can safely be reused. >> 248: */ >> 249: public Class<?>[] copyClasses(Class<?>[] classes) { > > There is no need to make this utility method non-static. This would also > obviate the need for having an instance of `ReflectionFactory` to access it. > > Additionally, at the risk of more bikeshedding, I think this utility method > is better suited in `AccessibleObject` base class, with package-private > visibility. Putting the util methods in `ReflectionFactory` erodes this > comment a bit: > > > <P> The methods in this class are extremely unsafe and can cause > subversion of both the language and the verifier. For this reason, > they are all instance methods, and access to the constructor of > this factory is guarded by a security check, in similar style to > {@link jdk.internal.misc.Unsafe}. </P> Can't this be used by class cloning interfaces too? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19327#discussion_r1609710019