栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Modelmapper:当源对象为null时,如何应用自定义映射?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Modelmapper:当源对象为null时,如何应用自定义映射?

无法直接使用ModelMapper,因为ModelMapper

map(Source, Destination)
方法会检查source是否为null,在这种情况下,它将引发异常。

看一下ModelMapper Map方法的实现:

public <D> D map(Object source, Class<D> destinationType) {    Assert.notNull(source, "source"); -> //IllegalArgument Exception    Assert.notNull(destinationType, "destinationType");    return mapInternal(source, null, destinationType, null);  }

我建议扩展ModelMapper类并

map(Object source, Class<D> destinationType)
像这样重写:

public class MyCustomizedMapper extends ModelMapper{    @Override    public <D> D map(Object source, Class<D> destinationType) {        Object tmpSource = source;        if(source == null){ tmpSource = new Object();        }        return super.map(tmpSource, destinationType);    }}

它检查source是否为null,在这种情况下,它将初始化然后调用super

map(Object source, Class<D>destinationType)

最后,您可以像这样使用自定义的映射器:

public static void main(String args[]){    //Your customized mapper    ModelMapper modelMapper = new MyCustomizedMapper();    MySource src = null;    MyTarget trg = modelMapper.map(src, MyTarget.class); //trg = null    System.out.println(trg);}

输出将是

new MyTarget()

输出控制台:NullExampleMain.MyTarget(fieldA = null,fieldB = null)

这样就被初始化了。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570708.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号