1 介绍toString
首先,scala中的toString和java中的toSting 一样的,scala基于jvm开发,而toString是java中的Object方法,所以,所有的对象都有这个方法,而全部的类都是继承于Object这个类,所以scala对象也含有toString方法。java中的 toString源码如下:
override def toString: String = {
return getClass.getName + "@" + Integer.toHexString (hashCode)
}
toString方法默认得到类型名字+hashCode,如果与你的预期不同,就需要覆盖重写toString,通过override的方式重写toString 方法,而返回类型不变,是String类型。
2 toString与apply的区别
object ToStringAndApply {
def main(args: Array[String]): Unit = {
val logTime = new LogTime
val logTime2 = new LogTime()
val logTime3 = new LogTime()()
println(logTime) // this is toString method.
println(logTime2) // this is toString method.
// println(logTime3) // 由于apply方法没带括号,出错,更改如下面一段代码
}
}
class LogTime {
def apply = "this is apply method."
override def toString: String = "this is toString method."
}
object ToStringAndApply {
def main(args: Array[String]): Unit = {
val logTime = new LogTime
val logTime2 = new LogTime()
val logTime3 = new LogTime()()
println(logTime) // this is toString method.
println(logTime2) // this is toString method.
println(logTime3) // this is apply method.
}
}
class LogTime {
def apply() = "this is apply method."
override def toString: String = "this is toString method."
}
网友评论