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

时间:2012-01-01 23:59:21

标签: scala

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

package com.example {
  class MyClass
}

或者像这样:

package com {
  package object example {
    class MyClass
  }
}

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

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

我能想到的唯一原因是,而不是只能在{em>包中放置class es,objecttype s,您可以将defvalvar放入对象