使用Dozer将数组映射到复杂类型

时间:2016-01-07 16:31:11

标签: java spring jaxb dozer

我可以将数组映射到复杂类型,如此link中的一个答案中所指定的那样。但是,我的应用程序包含500多个类,并且逐个识别和映射这些类将非常耗时。我正在尝试构建一个可以进行此转换的通用方法。例如,可以使用以下方法实现复杂类型到数组。我正在寻找进行逆向操作的方法 -

public <T> T map(Object srcObj, Class<?> destClass, String mapId) {
    if (srcObj == null) {
        return null;
    }

    if (srcObj.getClass().isArray()) {
        return (T) mapArrayToArray((Object[]) srcObj, destClass);
    }

    return (T) dozerBeanMapper.map(srcObj, destClass, mapId);
}

private Object mapArrayToArray(Object[] srcArray, Class<?> destClass) {
    Class<?> componentType = destClass.getComponentType();
    Object resultArray = Array.newInstance(componentType, srcArray.length);

    for (int i = 0; i < srcArray.length; i++) {
        Object resultItem = this.map(srcArray[i], componentType);
        Array.set(resultArray, i, resultItem);
    }

    return resultArray;
}

0 个答案:

没有答案