黑猴子的家:Scala 包对象

包可以包含类、对象和特质trait,但不能包含函数或变量的定义。很不幸,这是Java虚拟机的局限。

把工具函数或常量添加到包而不是某个Utils对象,这是更加合理的做法。

包对象的出现,正是为了解决这个局限。每个包都可以有一个包对象。你需要在父包中定义它,且名称与子包一样。Java虚拟机在编译的时候,Java是不支持的,Scala总是善于突破这种限制,Scala 突破限制后,再乖乖回去,只是为了方便开发, scala编译后,还是.Class文件,放到jvm里面运行

package com.nick.impatient

package object people {
  val defaultName = "Nick"
}
package people {
  class Person {
    var name = defaultName // 从包对象拿到的常值
  }
}

转载于:https://www.jianshu.com/p/a6fa8a041599

猜你喜欢

转载自blog.csdn.net/weixin_33690367/article/details/91182484