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




  }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值