This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git


The following commit(s) were added to refs/heads/master by this push:
     new 0ef55fe  Don't generate gratuitous garbage.
0ef55fe is described below

commit 0ef55fe145922d334d645e054fc194207de65b8a
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Thu Dec 26 19:26:14 2019 -0500

    Don't generate gratuitous garbage.
---
 .../java/org/apache/commons/lang3/ArrayUtils.java  | 31 ++++++++++++++++++++++
 .../commons/lang3/exception/ExceptionUtils.java    |  2 +-
 .../apache/commons/lang3/reflect/FieldUtils.java   | 17 ++++++------
 .../apache/commons/lang3/reflect/MethodUtils.java  |  2 +-
 .../apache/commons/lang3/reflect/TypeUtils.java    |  8 +++---
 5 files changed, 45 insertions(+), 15 deletions(-)

diff --git a/src/main/java/org/apache/commons/lang3/ArrayUtils.java 
b/src/main/java/org/apache/commons/lang3/ArrayUtils.java
index 2aa8510..f719644 100644
--- a/src/main/java/org/apache/commons/lang3/ArrayUtils.java
+++ b/src/main/java/org/apache/commons/lang3/ArrayUtils.java
@@ -17,6 +17,9 @@
 package org.apache.commons.lang3;
 
 import java.lang.reflect.Array;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
 import java.util.Arrays;
 import java.util.BitSet;
 import java.util.Comparator;
@@ -91,6 +94,20 @@ public class ArrayUtils {
     public static final Double[] EMPTY_DOUBLE_OBJECT_ARRAY = new Double[0];
 
     /**
+     * An empty immutable {@code Field} array.
+     *
+     * @since 3.10
+     */
+    public static final Field[] EMPTY_FIELD_ARRAY = new Field[0];
+
+    /**
+     * An empty immutable {@code Method} array.
+     *
+     * @since 3.10
+     */
+    public static final Method[] EMPTY_METHOD_ARRAY = new Method[0];
+
+    /**
      * An empty immutable {@code float} array.
      */
     public static final float[] EMPTY_FLOAT_ARRAY = new float[0];
@@ -141,6 +158,20 @@ public class ArrayUtils {
     public static final String[] EMPTY_STRING_ARRAY = new String[0];
 
     /**
+     * An empty immutable {@code Throwable} array.
+     * 
+     * @since 3.10
+     */
+    public static final Throwable[] EMPTY_THROWABLE_ARRAY = new Throwable[0];
+
+    /**
+     * An empty immutable {@code Type} array.
+     * 
+     * @since 3.10
+     */
+    public static final Type[] EMPTY_TYPE_ARRAY = new Type[0];
+
+    /**
      * The index value when an element is not found in a list or array: {@code 
-1}.
      * This value is returned by methods in this class and can also be used in 
comparisons with values returned by
      * various method from {@link java.util.List}.
diff --git 
a/src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java 
b/src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java
index 6550fd8..152c809 100644
--- a/src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java
+++ b/src/main/java/org/apache/commons/lang3/exception/ExceptionUtils.java
@@ -438,7 +438,7 @@ public class ExceptionUtils {
      */
     public static Throwable[] getThrowables(final Throwable throwable) {
         final List<Throwable> list = getThrowableList(throwable);
-        return list.toArray(new Throwable[0]);
+        return list.toArray(ArrayUtils.EMPTY_THROWABLE_ARRAY);
     }
 
     /**
diff --git a/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java 
b/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
index 553be4e..07eb839 100644
--- a/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/FieldUtils.java
@@ -16,12 +16,6 @@
  */
 package org.apache.commons.lang3.reflect;
 
-import org.apache.commons.lang3.ClassUtils;
-import org.apache.commons.lang3.JavaVersion;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.SystemUtils;
-import org.apache.commons.lang3.Validate;
-
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
@@ -29,6 +23,13 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.lang3.JavaVersion;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.commons.lang3.Validate;
+
 /**
  * Utilities for working with {@link Field}s by reflection. Adapted and 
refactored from the dormant [reflect] Commons
  * sandbox component.
@@ -199,7 +200,7 @@ public class FieldUtils {
      */
     public static Field[] getAllFields(final Class<?> cls) {
         final List<Field> allFieldsList = getAllFieldsList(cls);
-        return allFieldsList.toArray(new Field[0]);
+        return allFieldsList.toArray(ArrayUtils.EMPTY_FIELD_ARRAY);
     }
 
     /**
@@ -237,7 +238,7 @@ public class FieldUtils {
      */
     public static Field[] getFieldsWithAnnotation(final Class<?> cls, final 
Class<? extends Annotation> annotationCls) {
         final List<Field> annotatedFieldsList = 
getFieldsListWithAnnotation(cls, annotationCls);
-        return annotatedFieldsList.toArray(new Field[0]);
+        return annotatedFieldsList.toArray(ArrayUtils.EMPTY_FIELD_ARRAY);
     }
 
     /**
diff --git a/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java 
b/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
index 491470d..905052f 100644
--- a/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/MethodUtils.java
@@ -878,7 +878,7 @@ public class MethodUtils {
                                                     final boolean 
searchSupers, final boolean ignoreAccess) {
         final List<Method> annotatedMethodsList = 
getMethodsListWithAnnotation(cls, annotationCls, searchSupers,
                 ignoreAccess);
-        return annotatedMethodsList.toArray(new Method[0]);
+        return annotatedMethodsList.toArray(ArrayUtils.EMPTY_METHOD_ARRAY);
     }
 
     /**
diff --git a/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java 
b/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java
index f9df8c6..e1bbd0e 100644
--- a/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java
+++ b/src/main/java/org/apache/commons/lang3/reflect/TypeUtils.java
@@ -220,8 +220,6 @@ public class TypeUtils {
      * @since 3.2
      */
     private static final class WildcardTypeImpl implements WildcardType {
-        private static final Type[] EMPTY_BOUNDS = new Type[0];
-
         private final Type[] upperBounds;
         private final Type[] lowerBounds;
 
@@ -231,8 +229,8 @@ public class TypeUtils {
          * @param lowerBounds of this type
          */
         private WildcardTypeImpl(final Type[] upperBounds, final Type[] 
lowerBounds) {
-            this.upperBounds = ObjectUtils.defaultIfNull(upperBounds, 
EMPTY_BOUNDS);
-            this.lowerBounds = ObjectUtils.defaultIfNull(lowerBounds, 
EMPTY_BOUNDS);
+            this.upperBounds = ObjectUtils.defaultIfNull(upperBounds, 
ArrayUtils.EMPTY_TYPE_ARRAY);
+            this.lowerBounds = ObjectUtils.defaultIfNull(lowerBounds, 
ArrayUtils.EMPTY_TYPE_ARRAY);
         }
 
         /**
@@ -1149,7 +1147,7 @@ public class TypeUtils {
             }
         }
 
-        return types.toArray(new Type[0]);
+        return types.toArray(ArrayUtils.EMPTY_TYPE_ARRAY);
     }
 
     /**

Reply via email to