1 package net.sourceforge.jparam.conversion.creators; 2 3 import java.lang.reflect.Constructor; 4 5 6 public class ConstructorCreator extends AbstractCreator { 7 boolean[] canArgBeNull; 8 9 Constructor c; 10 11 public ConstructorCreator(Constructor c) { 12 this.c = c; 13 this.returnType = c.getDeclaringClass(); 14 this.parameterTypes = c.getParameterTypes(); 15 this.canArgBeNull = new boolean[parameterTypes.length]; 16 for (int i = 0; i < parameterTypes.length; i++) { 17 if (parameterTypes[i].isPrimitive()) { 18 canArgBeNull[i] = false; 19 parameterTypes[i] = ObjectCreator.getInstance() 20 .getNonPrimitiveClass(parameterTypes[i]); 21 22 } else { 23 canArgBeNull[i] = true; 24 } 25 } 26 } 27 28 protected Object internalCreate(Object[] parameters) throws Exception { 29 return c.newInstance(parameters); 30 } 31 32 protected boolean creatorEquals(ICreator o) { 33 ConstructorCreator other = (ConstructorCreator) o; 34 35 return c.equals(other.c); 36 } 37 38 public boolean canBeNull(int index) { 39 return canArgBeNull[index]; 40 } 41 42 }