パッケージには、クラス、オブジェクトおよび性格特性を含めることができますが、関数や変数の定義を含めることはできません。残念ながら、これは、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で再現