1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java自动填充_java-自动使用随机数据填充原始属性?

java自动填充_java-自动使用随机数据填充原始属性?

时间:2024-06-19 14:38:42

相关推荐

java自动填充_java-自动使用随机数据填充原始属性?

我在这里使用反射和递归来获取我要测试的坚固对象中的所有字段。 我也正在使用PODAM,我希望有人会发现它有用。

public class Populate {

private final PodamFactory podamFactory = new PodamFactoryImpl();

private

P getManufacturedPojo(final Class

klass) {

return podamFactory.manufacturePojo(klass);

}

private Object populateAllIn(final Class targetClass) throws IllegalAccessException, InstantiationException {

final Object target = targetClass.newInstance();

//Get all fields present on the target class

final Set allFields = getAllFields(targetClass, Predicates.alwaysTrue());

//Iterate through fields

for (final Field field : allFields) {

//Set fields to be accessible even when private

field.setAccessible(true);

final Class> fieldType = field.getType();

if (fieldType.isEnum() && EnrichmentType.class.isAssignableFrom(fieldType)) {

//handle any enums here if you have any

}

//Check if the field is a collection

if (Collection.class.isAssignableFrom(fieldType)) {

//Get the generic type class of the collection

final Class> genericClass = getGenericClass(field);

//Check if the generic type of a list is abstract

if (Modifier.isAbstract(genericClass.getModifiers())) {

//You might want to use any class that extends

//Your abstract class like

final List list = new ArrayList<>();

list.add(populateAllIn(ClassExtendingAbstract.class));

field.set(target, list);

} else {

final List list = new ArrayList<>();

list.add(populateAllIn(genericClass));

field.set(target, list);

}

} else if ((isSimpleType(fieldType) || isSimplePrimitiveWrapperType(fieldType)) && !fieldType.isEnum()) {

field.set(target, getManufacturedPojo(fieldType));

} else if (!fieldType.isEnum()) {

field.set(target, populateAllIn(fieldType));

}

}

return target;

}

和一些辅助方法。 代码可能并不完美,但是可以工作:)。

private Class> getGenericClass(final Field field) {

final ParameterizedType collectionType = (ParameterizedType) field.getGenericType();

return (Class>) collectionType.getActualTypeArguments()[0];

}

private boolean isSimpleType(final Class> fieldType) {

return fieldType.isPrimitive()

|| fieldType.isEnum()

|| String.class.isAssignableFrom(fieldType)

|| Date.class.isAssignableFrom(fieldType);

}

private boolean isSimplePrimitiveWrapperType(final Class> fieldType) {

return Integer.class.isAssignableFrom(fieldType)

|| Boolean.class.isAssignableFrom(fieldType)

|| Character.class.isAssignableFrom(fieldType)

|| Long.class.isAssignableFrom(fieldType)

|| Short.class.isAssignableFrom(fieldType)

|| Double.class.isAssignableFrom(fieldType)

|| Float.class.isAssignableFrom(fieldType)

|| Byte.class.isAssignableFrom(fieldType);

}

谢谢,如果有更简单的方法来填充所有内容,请告诉我。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。