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);
             }