Hey, >>> doing a bit of digging it appears a similar improvement - along with a >>> lot of other things - was suggested and filed a few years back: >>> https://bugs.openjdk.java.net/browse/JDK-8029019 >> Really sorry for missing that! >>
If https://bugs.openjdk.java.net/browse/JDK-8029019 is decided to be solved I'd like to add the following addition to that: ========= PATCH =========== # User Christoph Dreis <[email protected]> Avoid allocations in AnnotationType constructor coming from Method.getParameterTypes() diff --git a/src/java.base/share/classes/sun/reflect/annotation/AnnotationType.java b/src/java.base/share/classes/sun/reflect/annotation/AnnotationType.java --- a/src/java.base/share/classes/sun/reflect/annotation/AnnotationType.java +++ b/src/java.base/share/classes/sun/reflect/annotation/AnnotationType.java @@ -121,7 +121,7 @@ if (Modifier.isPublic(method.getModifiers()) && Modifier.isAbstract(method.getModifiers()) && !method.isSynthetic()) { - if (method.getParameterTypes().length != 0) { + if (method.getParameterCount() != 0) { throw new IllegalArgumentException(method + " has params"); } String name = method.getName();
