【发布时间】:2021-04-07 15:16:43
【问题描述】:
如何在 Kotlin 中实现以下目标?
public class Person {
String firstName;
String lastName;
public Person(String name, String somethingElse) {
this.firstName = name.substring(0, 5);
this.lastName = name.substring(5, 10) + somethingElse;
}
}
用例可能有点奇怪,但这在 Kotlin 中应该是可能的,对吧?我有类似以下的内容,但后来我得到Conflicting overloads
data class Person(
val firstName: String,
val lastName: String
) {
constructor(name: String, somethingElse: String) :
this(firstName = name.substring(0, 5), lastName = name.substring(5, 10) + somethingElse)
}
【问题讨论】:
-
因为这是一个
data class,所以没有办法让 2 个构造函数采用 2 个字符串。如果这不是一个数据类,你可能根本就没有主构造函数。 -
数据类必须有一个以实际属性作为参数的公共构造函数。否则,它们的一些关键功能(如
copy函数)就没有意义了。
标签: kotlin