Ano*_*die 7 android constructor kotlin
我有一个 Kotlin 数据类,它采用如下参数并且可打包。我在此数据类中定义了一个辅助构造函数,其中包含两个附加参数 lastSeen 和 netTotal。但是,我不断收到错误辅助构造函数的委托调用链中有一个循环。我该如何解决这个问题?
@Parcelize
data class Person(
val email: Email,
val overrideEmail: Email,
val phone: String,
val firstName: String,
val overrideFirstName: String,
val lastName: String,
val overrideLastName: String,
val personId: String
) : Parcelable {
//some code
constructor(
email: Email,
overrideEmail: Email,
phone: String,
firstName: String,
overrideFirstName: String,
lastName: String,
overrideLastName: String,
personId: String,
lastSeen: String,
netTotal: Int?
) : this(email, overrideEmail, phone, firstName, overrideFirstName, lastName, overrideLastName, personId, lastSeen, netTotal)
}
Run Code Online (Sandbox Code Playgroud)
此外,我必须在响应映射器中使用这个辅助构造函数。具有原始值的映射器如下所示。如何在我的响应映射器中包含辅助构造函数?
class PersonFromResponseMapper @Inject constructor() : Mapper<Person, PersonResponse>() {
override fun map(from: PersonResponse, params: Any?): Person = with(from) {
Person(
Email(receiptEmailAddress.orEmpty()),
Email(overrideEmail.orEmpty()),
"",
firstName.orEmpty(),
overrideFirstName.orEmpty(),
lastName.orEmpty(),
overrideLastName.orEmpty(),
personUserId.orEmpty()
)
}
Run Code Online (Sandbox Code Playgroud)
您收到此错误是因为您正在使用辅助构造函数调用辅助构造函数,从而使其成为一个循环。如果你稍微重构/美化你的代码,那么它就变得显而易见:
// secondary constructor
constructor(
email: Email,
overrideEmail: Email,
phone: String,
firstName: String,
overrideFirstName: String,
lastName: String,
overrideLastName: String,
personId: String,
lastSeen: String,
netTotal: Int?
) : this(
email,
overrideEmail,
phone,
firstName,
overrideFirstName,
lastName,
overrideLastName,
personId,
lastSeen,
netTotal
)
Run Code Online (Sandbox Code Playgroud)
如果比较参数,您可以看到您正在调用相同的(辅助)构造函数。您必须调用主构造函数并随后在块中使用附加参数。
如果解决了该问题,您还可以在映射器中调用辅助构造函数,不会出现任何问题。
| 归档时间: |
|
| 查看次数: |
13512 次 |
| 最近记录: |