是否可以在@Mapping
注释中表达Kotlin表达式?
(简化的)问题如下:
我有这个数据类:
data class Data (
val myClass: MyClass
)
:
data class DataDto (
myString: String
)
fun String.toMyClass() = ...
目前我想做这样的事情:
@Mapper
interface RefDataMapper {
@Mapping(expression = "kotlin(myString?.toMyClass())", target = "myClass")
fun toDomain(dataDto: DataDto) : Data
}
目前似乎表达式只能在Java中编写,所以上面的解决方案不起作用。我想做的事有可能做到吗?
注意:我不能使用装饰器,因为在Data
类中,这个属性被设置为val
,所以我只能在实例化期间设置这个属性。
MapStruct不支持Kotlin表达式,因为MapStruct目前只能够生成Java代码。因此,即使您的映射器是在Kotlin中定义的,映射器的实现也将用Java编写。
您必须调整表达式以使用java(...)
格式。