@@ -185,24 +185,29 @@ private boolean argTypesMatch(final List<String> constructorArgNames,
185
185
}
186
186
187
187
private List <String > getArgNames (Constructor <?> constructor ) {
188
- if (resultMap .configuration .isUseActualParamName () && Jdk .parameterExists ) {
189
- return ParamNameUtil .getParamNames (constructor );
190
- } else {
191
- List <String > paramNames = new ArrayList <String >();
192
- final Annotation [][] paramAnnotations = constructor .getParameterAnnotations ();
193
- int paramCount = paramAnnotations .length ;
194
- for (int paramIndex = 0 ; paramIndex < paramCount ; paramIndex ++) {
195
- String name = null ;
196
- for (Annotation annotation : paramAnnotations [paramIndex ]) {
197
- if (annotation instanceof Param ) {
198
- name = ((Param ) annotation ).value ();
199
- break ;
200
- }
188
+ List <String > paramNames = new ArrayList <String >();
189
+ List <String > actualParamNames = null ;
190
+ final Annotation [][] paramAnnotations = constructor .getParameterAnnotations ();
191
+ int paramCount = paramAnnotations .length ;
192
+ for (int paramIndex = 0 ; paramIndex < paramCount ; paramIndex ++) {
193
+ String name = null ;
194
+ for (Annotation annotation : paramAnnotations [paramIndex ]) {
195
+ if (annotation instanceof Param ) {
196
+ name = ((Param ) annotation ).value ();
197
+ break ;
198
+ }
199
+ }
200
+ if (name == null && resultMap .configuration .isUseActualParamName () && Jdk .parameterExists ) {
201
+ if (actualParamNames == null ) {
202
+ actualParamNames = ParamNameUtil .getParamNames (constructor );
203
+ }
204
+ if (actualParamNames .size () > paramIndex ) {
205
+ name = actualParamNames .get (paramIndex );
201
206
}
202
- paramNames .add (name != null ? name : "arg" + paramIndex );
203
207
}
204
- return paramNames ;
208
+ paramNames . add ( name != null ? name : "arg" + paramIndex ) ;
205
209
}
210
+ return paramNames ;
206
211
}
207
212
}
208
213
0 commit comments