关闭

scala中 toString和apply的区别

标签: scala
807人阅读 评论(0) 收藏 举报
分类:
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




  }
}
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场