Scala中的toString与apply的区别

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."
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 3,515评论 1 24
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • 组件思想 何为组件思想?个人认为是将实现某种特定功能的界面和逻辑代码,包括 html,css 和 js 打包成一个...
    Mindjet阅读 466评论 0 0
  • 经常听到身边妹子抱怨,初入职场,日常烦恼之一恐怕就是穿搭了,其实在面试的时候职场穿搭已经非常重要了。衣柜里满满的衣...
    yuki小芷阅读 1,505评论 2 24
  • 我从海边回来 把海风捎来 2018 如你所愿
    小诗鸽阅读 167评论 0 0