javamock生成对象
`import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class Mock {
private static final Boolean[] bools = new Boolean[] { true, false };
private static final char[] words = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
private static final Random r = new Random();
private static final int MAX_COLLECTION_LENGTH = 50;
private static final int MAX_STRING_LENGTH = 30;
@SuppressWarnings({ "unchecked", "rawtypes" })
public static
if (clazz == Character.class || clazz == Character.TYPE) {
return (T) (Character) words[r.nextInt(words.length)];
} else if (clazz == Boolean.class || clazz == Boolean.TYPE) {
return (T) (Boolean) bools[r.nextInt(bools.length)];
} else if (clazz == Long.class || clazz == Long.TYPE) {
return (T) (Long) r.nextLong();
} else if (clazz == Integer.class || clazz == Integer.TYPE) {
return (T) (Integer) r.nextInt();
} else if (clazz == Short.class || clazz == Short.TYPE) {
return (T) (Short) new Integer(r.nextInt(127)).shortValue();
} else if (clazz == Float.class || clazz == Float.TYPE) {
return (T) (Float) r.nextFloat();
} else if (clazz == Double.class || clazz == Double.TYPE) {
return (T) (Double) r.nextDouble();
} else if (clazz == String.class) {
return (T) randString(r.nextInt(MAX_STRING_LENGTH));
}
try {
T instance = clazz.newInstance();
for (Field f : ReflectUtil.getFields(clazz)) {
f.setAccessible(true);
Length lengthAnno = f.getAnnotation(Length.class);
if (f.getType() == Character.TYPE) {
f.setChar(instance, words[r.nextInt(words.length)]);
} else if (f.getType() == Character.class) {
f.set(instance, words[r.nextInt(words.length)]);
} else if (f.getType() == Boolean.TYPE) {
f.setBoolean(instance, bools[r.nextInt(bools.length)]);
} else if (f.getType() == Boolean.class) {
f.set(instance, bools[r.nextInt(bools.length)]);
} else if (f.getType() == Long.TYPE) {
f.setLong(instance, r.nextLong());
} else if (f.getType() == Long.class) {
f.set(instance, r.nextLong());
} else if (f.getType() == Integer.TYPE) {
f.setInt(instance, r.nextInt());
} else if (f.getType() == Integer.class) {
f.set(instance, r.nextInt());
} else if (f.getType() == Short.TYPE) {
f.setShort(instance, new Integer(r.nextInt(127)).shortValue());
} else if (f.getType() == Short.class) {
f.set(instance, new Integer(r.nextInt(127)).shortValue());
} else if (f.getType() == Float.TYPE) {
f.setFloat(instance, r.nextFloat());
} else if (f.getType() == Float.class) {
f.set(instance, r.nextFloat());
} else if (f.getType() == Double.TYPE) {
f.setDouble(instance, r.nextDouble());
} else if (f.getType() == Double.class) {
f.set(instance, r.nextDouble());
} else if (f.getType() == String.class) {
f.set(instance, randString(r.nextInt(MAX_STRING_LENGTH)));
} else if (f.getType() == List.class) {
int size = r.nextInt(MAX_COLLECTION_LENGTH);
List
浙公网安备 33010602011771号