View Javadoc

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  }