在正常声明类与包对象之间是否存在实质性区别?

Pau*_*her 7 scala

如果我有一个包com.example,我可以在这个包中创建一个类,如下所示:

package com.example {
  class MyClass
}
Run Code Online (Sandbox Code Playgroud)

或者像这样:

package com {
  package object example {
    class MyClass
  }
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,结果类都是(至少与其他Scala代码有关)com.example.MyClass.

肯定存在偶然的差异.在第一个例子中,得到的编译类是com/example/MyClass.class在第二个例子中,com/example/package$MyClass.class但是有没有实质性差异?

ret*_*nym 5

生成的类文件名的差异在scala-internals上讨论过,希望在Scala 2.10中消失.