@@ -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