MapStruct:Object.class 到 Custom.class 映射

MapStruct: Object.class to Custom.class mapping

我是 MapStruct 的新手,需要一些帮助。

我有一个源 class,带有一个属性

Object input;

其中,在运行时,returns 一个名为 TicketDetails 的自定义对象。

现在,在我的目标 class 中有一个名为

的属性
MyTicket myTicket;

其中,我需要使用 TicketDetails 对象的属性进行映射。 为了更好地理解,我在下面编写了正常的 java 代码示例。

SourceClassModel sourceClassModel = new SourceClassModel();
TargetClassModel targetClassModel = new TargetClassModel();

//mapping
TicketDetails ticketDetails = (TicketDetails) sourceClassModel.getInput();
targetClassModel.setMyTicket(ticketDetails.getMyTicket);

现在,我的问题是,如何使用 MapStruct 实现这种情况?

在使用的映射器上(参见 @Mapper#uses())或在映射器本身的非抽象方法中 - 如果它是抽象 class 而不是接口 - 定义映射ObjectTicketDetails 你自己:

TicketDetails asTicketDetails(Object details) {
    return (TicketDetails) details;
}

生成的将 SourceClassModel 转换为 TargetClassModel 的方法将调用手动编写的方法来转换 myTicket 属性.