Java 有没有办法更改默认映射?

Java 有没有办法更改默认映射?,java,modelmapper,Java,Modelmapper,我想将SourceClass类型映射到DestinationClass类型 公共类SourceClass{ 私有整数id; 私有字符串编号; 私有字符串用户名; 私人字符串电子邮件; } 公共类DestinationClass{ 私有整数id; 私人地图号码; 私有地图用户名; 私人地图电邮; } 目前,我使用一个自定义的转换器来进行映射,将字符串转换为映射 //此函数将新建并设置映射对象 公共地图集数据(字符串标题、对象值){ Map result=Maps.newHashMap(); 结

我想将
SourceClass
类型映射到
DestinationClass
类型

公共类SourceClass{
私有整数id;
私有字符串编号;
私有字符串用户名;
私人字符串电子邮件;
}
公共类DestinationClass{
私有整数id;
私人地图号码;
私有地图用户名;
私人地图电邮;
}
目前,我使用一个自定义的
转换器
来进行映射,将
字符串
转换为
映射

//此函数将新建并设置映射对象
公共地图集数据(字符串标题、对象值){
Map result=Maps.newHashMap();
结果.付诸表决(“标题”,标题);
结果。投入(“价值”,价值);
返回结果;
}
//此函数将返回我的自定义转换器
公共转换器myConverter(字符串标题){
//LocalI18nUtils.getString(字符串键)输入键并获取翻译
返回ctx->setData(LocalI18nUtils.getString(title),ctx.getSource();
}
并使用
modelMapper.addMappings()

PropertyMap映射=新的PropertyMap(){
@凌驾
受保护的void configure(){
使用(myConverter(“Number”)).map(source.getNumber()).setNumber(null);
使用(myConverter(“Username”)).map(source.getUsername()).setUsername(null);
使用(myConverter(“Email”)).map(source.getEmail()).setEmail(null);
}
}
//源是SourceClass类型对象
ModelMapper ModelMapper=新的ModelMapper();
addMappings(映射);
modelMapper.map(源,DestinationClass.class);
因此,源对象和目标对象应该是:

// source
{
    "id": 1,
    "number": "mem_0001",
    "username": "member0001",
    "email": "member001@mail.com"
}
我以前读过这个问题=>

解决方案说明:将
ModelMapper
自定义映射添加到默认映射中,因此您无需指定
id

//您不需要编写此语句。
map(source.getId()).setId(null);
所以我在想,是否有任何方法可以更改(或覆盖)默认映射,以便编写更少的代码

也许它看起来像:

ModelMapper ModelMapper=newmodelmapper();
// ...
//某些内容将更改myConverter的默认映射
// ...
modelMapper.map(源,DestinationClass.class);

感谢您提供的帮助和答案。

主题外,但为什么您希望为类变量从一个字符串转到另一个对象,并丢失该类型信息?因为有些输入是“123.456”(字符串),另一些是123.456(数字),我不知道输入类型。所以我声明输出类变量是Object。但在这个问题中,您可以将Object更改为String。
// destination
{
    "id": 1,
    "number": {
        "title": "Number",
        "value": "mem_0001"
    },
    "username": {
        "title": "Username",
        "value": "member0001"
    },
    "email": {
        "title": "Email",
        "value": "member001@mail.com"
    }
}