我的方法就像我有我的实体类一样:
data class User(
private val name: String,
private val age: Int
)
我有一个 DTO:
data class UserDto(
val name: String,
val age: Int
)
映射器函数是 User 的扩展函数(在我的类文件中):
User.mapToDto(UserDto u) {
this.name = u.name
this.age = u.age
}
我怀疑这种方法是否是最好的,因为我的 DTO 没有私有修饰符,认为它是 val 属性(因此不会更改)。或者有一个最好的方法来做到这一点,尊重封装等概念和所有干净的代码其他东西。
我已经尝试制作一个映射器(在另一个文件中),但不起作用,因为我的实体类具有私有访问权限,因此有必要在我的 User 类中执行此操作。
您可以使用构造函数或(扩展)函数返回对象。
使用构造函数,它看起来像这样:
data class UserDto(
val name: String,
val age: Int
){
constructor(user: User) : this(user.name, user.age){}
}
val dto = UserDto(user);
有了扩展函数,就可以使用现有的构造函数了:
User.mapToDto() {
return UserDto(name, age);
}
val dto = user.mapToDto()
请注意,这两种方法都需要
name
和 age
才能访问。
如果你不想这样,你需要将该方法添加到 User
:
data class User(
private val name: String,
private val age: Int
){
fun mapToDto() {
return UserDto(name, age);
}
}