我试图了解 Orika 何时使用转换器进行映射而不是直接转换。
我有以下映射:
Class A {
Map<String, Object> props;
}
Class B {
String bStr;
int bInt;
}
我的映射定义为 props['aStr'] => bStr 和 props['aInt'] => bInt
当我查看生成的代码时,我看到对于 String 的情况,它使用一个转换器并调用它的 convert 方法进行转换:
destination.setBStr("" + ((ma.glasnost.orika.Converter)usedConverters[0]).convert(
((java.lang.Object) ((java.util.Map) source.getProps().get("aStr"),
(ma.glasnost.orika.metadata.Type) usedTypes[0]))
但是,对于整数情况,它直接将其转换为:
destination.setBInt((java.lang.Integer)(java.lang.Object) ((java.util.Map)
source.getProps().get("aInt")))
上面的代码行最终给出了类转换异常。
为了解决这个问题,我一直在考虑使用自定义转换器,但如果上面的代码行不使用转换器,那么这将不起作用。
当然,我总是可以在我的自定义映射器中做到这一点,但只是想了解如何为类型转换生成代码。
谢谢!!