@@ -340,7 +340,7 @@ public <T> ObjectReader<T> createObjectReader(
340
340
341
341
@ Override
342
342
protected <T > ObjectReaderNoneDefaultConstructor createNoneDefaultConstructorObjectReader (
343
- Class < T > objectClass ,
343
+ Class objectClass ,
344
344
BeanInfo beanInfo ,
345
345
Function <Map <Long , Object >, T > constructorFunction ,
346
346
List <Constructor > alternateConstructors ,
@@ -358,18 +358,20 @@ protected <T> ObjectReaderNoneDefaultConstructor createNoneDefaultConstructorObj
358
358
parameterNames ,
359
359
paramFieldReaders ,
360
360
fieldReaderArray ,
361
- null ,
362
- null
361
+ beanInfo . seeAlso ,
362
+ beanInfo . seeAlsoNames
363
363
);
364
364
365
365
boolean match = true ;
366
366
367
367
if (beanInfo .autoTypeBeforeHandler != null
368
368
|| fieldReaderArray .length != 0
369
- || !(constructorFunction instanceof ConstructorFunction )
370
- || ! alternateConstructors .isEmpty ()
369
+ || ( !(constructorFunction instanceof ConstructorFunction ) && (!( constructorFunction instanceof FactoryFunction )) )
370
+ || ( alternateConstructors != null && ! alternateConstructors .isEmpty () )
371
371
|| classLoader .isExternalClass (objectClass )
372
372
|| (beanInfo .readerFeatures & JSONReader .Feature .SupportAutoType .mask ) != 0
373
+ || (objectReaderAdapter .noneDefaultConstructor != null && objectReaderAdapter .noneDefaultConstructor .getParameterCount () != fieldReaderArray .length )
374
+ || (constructorFunction instanceof FactoryFunction && ((FactoryFunction <T >) constructorFunction ).paramNames .length != fieldReaderArray .length )
373
375
) {
374
376
match = false ;
375
377
}
@@ -2027,8 +2029,10 @@ private <T> void genMethodReadObject(
2027
2029
ObjectReaderNoneDefaultConstructor objectReaderNoneDefaultConstructor = (ObjectReaderNoneDefaultConstructor ) context .objectReaderAdapter ;
2028
2030
boolean constructDirect = true ;
2029
2031
if (classLoader .isExternalClass (context .objectClass )
2032
+ || context .objectClass .getTypeParameters ().length != 0
2030
2033
|| (objectReaderNoneDefaultConstructor .constructor != null && !Modifier .isPublic (objectReaderNoneDefaultConstructor .constructor .getModifiers ()))
2031
2034
|| (context .objectClass != null && !Modifier .isPublic (context .objectClass .getModifiers ()))
2035
+ || objectReaderNoneDefaultConstructor .factoryFunction != null
2032
2036
) {
2033
2037
constructDirect = false ;
2034
2038
}
0 commit comments