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 }