You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Spring Boot中使用ModelMapper实现对象转换的正确写法

问题原因

你碰到的编译报错是因为Kotlin和Java获取类字面量的语法存在差异:

  • Java中使用类名.class获取类的Class实例
  • Kotlin中不存在该语法,直接套用会触发Name expected、Expecting ')'的编译错误
正确实现方式

Kotlin中获取Java类的Class实例需要两步:

  1. 用类名::class拿到Kotlin的KClass类型引用
  2. 调用KClass的.java扩展属性,拿到Java互操作所需的java.lang.Class实例,匹配ModelMapper的map方法参数类型

对应转换函数的正确写法如下:

// 引入ModelMapper依赖后即可使用
class ConvertService {
    // 假设modelMapper已经通过构造注入/手动初始化完成
    private val modelMapper = ModelMapper()

    fun convertToTest(another: AnotherTest): Test {
        return modelMapper.map(another, Test::class.java)
    }
}

你定义的两个测试类Test、AnotherTest中同名字段name、size会被ModelMapper自动映射,AnotherTest独有的id字段因为Test中不存在对应属性,转换时会自动忽略,不会抛出异常。

可选优化:通用转换扩展

如果项目中大量使用ModelMapper做对象转换,可以封装一个通用内联扩展函数,省去每次手动传类型引用的重复代码:

import org.modelmapper.ModelMapper

// 全局初始化/注入的ModelMapper实例
val modelMapper = ModelMapper()

inline fun <reified T> Any.convertTo(): T {
    return modelMapper.map(this, T::class.java)
}

// 业务代码中直接调用即可,类型自动推断
fun convertToTest(another: AnotherTest): Test {
    return another.convertTo()
}

内容的提问来源于stack exchange,提问作者rajeshp222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:01:00