public static ReflectConstructorSpec createConstructor( final ConstructorAwareReflectClass claxx, Class clazz, ReflectorConfiguration config, ReflectConstructor[] constructors) { if (claxx == null) { return ReflectConstructorSpec.INVALID_CONSTRUCTOR; } if (claxx.isAbstract() || claxx.isInterface()) { return ReflectConstructorSpec.INVALID_CONSTRUCTOR; } if (!Platform4.callConstructor()) { boolean skipConstructor = !config.callConstructor(claxx); if (!claxx.isCollection()) { ReflectConstructor serializableConstructor = skipConstructor(claxx, skipConstructor, config.testConstructors()); if (serializableConstructor != null) { return new ReflectConstructorSpec(serializableConstructor, null); } } } if (!config.testConstructors()) { return new ReflectConstructorSpec(new PlatformReflectConstructor(clazz), null); } if (ReflectPlatform.createInstance(clazz) != null) { return new ReflectConstructorSpec(new PlatformReflectConstructor(clazz), null); } Tree sortedConstructors = sortConstructorsByParamsCount(constructors); return findConstructor(claxx, sortedConstructors); }
public static ReflectConstructor skipConstructor( ConstructorAwareReflectClass claxx, boolean skipConstructor, boolean testConstructor) { if (!skipConstructor) { return null; } ReflectConstructor serializableConstructor = claxx.getSerializableConstructor(); if (serializableConstructor == null) { return null; } if (!testConstructor || Deploy.csharp) { return serializableConstructor; } Object obj = serializableConstructor.newInstance((Object[]) null); if (obj != null) { return serializableConstructor; } return null; }