JHi*_*son 4 constructor kotlin
假设我有一个可以序列化为字符串的简单数据类:
class Time(val hours: Int, val minutes: Int, val seconds: Int) {
fun serialize(): String {
return "%02d:%02d:%02d".format(hours, minutes, seconds)
}
}
Run Code Online (Sandbox Code Playgroud)
如何添加第二个构造函数来允许我使用序列化字符串构造此对象?我期望能够使用
constructor(serializedString: String) {
val subs = serializedString.split(":")
return Time(subs[0].toInt(),subs[1].toInt(),subs[2].toInt())
}
Run Code Online (Sandbox Code Playgroud)
但后来发现辅助构造函数实际上需要重写主构造函数。显然,我的辅助构造函数的形状或形式与我的主构造函数完全不同。
companion object包含静态deserialize方法的 a 吗?只是不要使用主构造函数。使用两个不同的辅助构造函数:
class Time {
val hours: Int
val minutes: Int
val seconds: Int
constructor(hours: Int, minutes: Int, seconds: Int) {
this.hours = hours
this.minutes = minutes
this.seconds = seconds
}
constructor(serializedString: String) {
val subs = serializedString.split(":")
this.hours = subs[0].toInt()
this.minutes = subs[1].toInt()
this.seconds = subs[2].toInt()
}
fun serialize(): String{
return "{%02d}:{%12d}:{%22d}".format(hours,minutes,seconds)
}
}
Run Code Online (Sandbox Code Playgroud)
如果您需要data class和equals/hashCode最好在companion object.
| 归档时间: |
|
| 查看次数: |
3011 次 |
| 最近记录: |