scala中 toString和apply的区别

class legotime{
  def apply = "this is apply method"

  /**
    * 1 :scala中的toString和java中的toSting 一样------所有的对象都有這个方法,
    * 因为toString 是 java中object的方法,而全部的类都是继承于Object這个类
    * 2: java中的toString是
    * public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
      }
    *  所以toString方法默认得到类型名字+hashCode
    *  如果要不同的结果,那么就应该 override 這个方法
    *
    *  3:toString 方法一定是返回的是String类型
    */
  override def toString = "this is toString method"
}

object applyAndToString {
  def main(args: Array[String]) {
    val lego1 = new legotime
    println(lego1)//this is toString method
    val lego2 = new legotime()
    println(lego2)//this is toString method

    //在测试下面代码的时候 legotime的apply方法先不加括号
    //val lego3 = new legotime()()
    //println(lego3)//发现报错,提示 : legotime does not take parameters

    /**
      *  当给apply方法加上括号的时候就不会报错
      */
    val lego4 = new legotime()()
    println(lego4)//this is apply method




  }
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/legotime/article/details/52356639
文章标签: scala
个人分类: scala
上一篇scala之case class 和case object
下一篇spark源码阅读笔记Dataset(一)初识Dataset
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭