You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2022/06/26 17:24:19 UTC
[groovy] branch master updated: Tweak finding `cloneArray` method
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new c18411fe23 Tweak finding `cloneArray` method
c18411fe23 is described below
commit c18411fe233bd60d4d045d65d9bb04b459f95e12
Author: Daniel Sun <su...@apache.org>
AuthorDate: Mon Jun 27 01:22:29 2022 +0800
Tweak finding `cloneArray` method
---
src/main/java/groovy/lang/MetaClassImpl.java | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java
index 947007fe02..c32102989d 100644
--- a/src/main/java/groovy/lang/MetaClassImpl.java
+++ b/src/main/java/groovy/lang/MetaClassImpl.java
@@ -1167,14 +1167,16 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
private static class MethodHandleHolder {
private static final MethodHandle CLONE_ARRAY_METHOD_HANDLE;
static {
- Optional<Method> methodOptional = Arrays.stream(ArrayUtil.class.getDeclaredMethods()).filter(m -> "cloneArray".equals(m.getName())).findFirst();
- if (!methodOptional.isPresent()) {
- throw new GroovyBugError("Failed to find `cloneArray` method in class `" + ArrayUtil.class.getName() + "`");
+ final Class<ArrayUtil> arrayUtilClass = ArrayUtil.class;
+ Method cloneArrayMethod;
+ try {
+ cloneArrayMethod = arrayUtilClass.getDeclaredMethod("cloneArray", Object[].class);
+ } catch (NoSuchMethodException e) {
+ throw new GroovyBugError("Failed to find `cloneArray` method in class `" + arrayUtilClass.getName() + "`", e);
}
- Method cloneArrayMethod = methodOptional.get();
try {
- CLONE_ARRAY_METHOD_HANDLE = MethodHandles.lookup().in(ArrayUtil.class).unreflect(cloneArrayMethod);
+ CLONE_ARRAY_METHOD_HANDLE = MethodHandles.lookup().in(arrayUtilClass).unreflect(cloneArrayMethod);
} catch (IllegalAccessException e) {
throw new GroovyBugError("Failed to create method handle for " + cloneArrayMethod);
}