< prev index next >

src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java

Print this page

        

*** 362,371 **** --- 362,381 ---- } catch (NoSuchMethodException ex) { return null; } } + public final Constructor<?> newConstructorForSerialization(Class<?> cl, + Constructor<?> constructorToCall) + { + if (constructorToCall.getDeclaringClass() == cl) { + constructorToCall.setAccessible(true); + return constructorToCall; + } + return generateConstructor(cl, constructorToCall); + } + public final Constructor<?> newConstructorForSerialization(Class<?> cl) { Class<?> initCl = cl; while (Serializable.class.isAssignableFrom(initCl)) { if ((initCl = initCl.getSuperclass()) == null) { return null;
*** 381,390 **** --- 391,406 ---- return null; } } catch (NoSuchMethodException ex) { return null; } + return generateConstructor(cl, constructorToCall); + } + + private final Constructor<?> generateConstructor(Class<?> cl, + Constructor<?> constructorToCall) { + ConstructorAccessor acc = new MethodAccessorGenerator(). generateSerializationConstructor(cl, constructorToCall.getParameterTypes(), constructorToCall.getExceptionTypes(),
< prev index next >