Skip to content

Commit cd87e10

Browse files
authored
HBASE-26638 Cherry-pick the ReflectionUtils improvements in HBASE-21515 to branch-2 (#3993)
Signed-off-by: Yulin Niu <niuyulin@apache.org>
1 parent a67fb0a commit cd87e10

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

hbase-common/src/main/java/org/apache/hadoop/hbase/util/ReflectionUtils.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,19 @@ public static <T> Constructor<T> findConstructor(Class<T> type, Object... paramT
8383

8484
boolean match = true;
8585
for (int i = 0; i < ctorParamTypes.length && match; ++i) {
86-
Class<?> paramType = paramTypes[i].getClass();
87-
match = (!ctorParamTypes[i].isPrimitive()) ? ctorParamTypes[i].isAssignableFrom(paramType) :
88-
((int.class.equals(ctorParamTypes[i]) && Integer.class.equals(paramType)) ||
89-
(long.class.equals(ctorParamTypes[i]) && Long.class.equals(paramType)) ||
90-
(double.class.equals(ctorParamTypes[i]) && Double.class.equals(paramType)) ||
91-
(char.class.equals(ctorParamTypes[i]) && Character.class.equals(paramType)) ||
92-
(short.class.equals(ctorParamTypes[i]) && Short.class.equals(paramType)) ||
93-
(boolean.class.equals(ctorParamTypes[i]) && Boolean.class.equals(paramType)) ||
94-
(byte.class.equals(ctorParamTypes[i]) && Byte.class.equals(paramType)));
86+
if (paramTypes[i] == null) {
87+
match = !ctorParamTypes[i].isPrimitive();
88+
} else {
89+
Class<?> paramType = paramTypes[i].getClass();
90+
match = (!ctorParamTypes[i].isPrimitive()) ? ctorParamTypes[i].isAssignableFrom(paramType)
91+
: ((int.class.equals(ctorParamTypes[i]) && Integer.class.equals(paramType)) ||
92+
(long.class.equals(ctorParamTypes[i]) && Long.class.equals(paramType)) ||
93+
(double.class.equals(ctorParamTypes[i]) && Double.class.equals(paramType)) ||
94+
(char.class.equals(ctorParamTypes[i]) && Character.class.equals(paramType)) ||
95+
(short.class.equals(ctorParamTypes[i]) && Short.class.equals(paramType)) ||
96+
(boolean.class.equals(ctorParamTypes[i]) && Boolean.class.equals(paramType)) ||
97+
(byte.class.equals(ctorParamTypes[i]) && Byte.class.equals(paramType)));
98+
}
9599
}
96100

97101
if (match) {

0 commit comments

Comments
 (0)