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