假设我有一个可以序列化为字符串的简单数据类:
constructor(serializedString: String) {
val subs = serializedString.split(":")
return Time(subs[0].toInt(),subs[1].toInt(),subs[2].toInt())
}
如何添加第二个构造函数,允许我使用序列化的String构造此对象?我希望能够使用
companion object
但是要发现辅助构造函数需要实际覆盖主构造函数。显然,我的辅助构造函数没有任何形状或形式类似于我的主要构造函数。
deserialize
方法的 const result = {};
for(const [key, obj] of Object.entries(quizCorrectAnswer))
result[key] = Array.from({...obj, length:5}, el => !!el);
吗? 答案 0 :(得分:3)
只是不要使用主构造函数。使用两个不同的辅助构造函数:
data class
如果您需要equals
和hashCode
/ companion object
,最好在<td><div class="hidden">...</div></td>
中使用带有工厂方法的主构造函数。
答案 1 :(得分:2)
由于hours
,minutes
和seconds
是您班级的属性,您也可以将它们放在主要辅导员中,让辅助电话称为主要辅助人员:
class Time(val hours: Int, val minutes: Int, val seconds: Int) {
constructor(serializedString: String) : this(
serializedString.split(":")[0].toInt(),
serializedString.split(":")[1].toInt(),
serializedString.split(":")[2].toInt()
)
fun serialize(): String {
return "{%02d}:{%12d}:{%22d}".format(hours, minutes, seconds)
}
}
如果您需要data
,请添加data class
关键字。
不要担心serializedString.split(":")
被调用三次,它不会对性能产生任何重大影响。