当我通过 Eclipse 重命名 .scala 文件时,类名本身不会被重命名。
这是预期的行为吗?它似乎没有破坏任何东西。
我希望它被重命名,来自 Java 背景,文件名/类名必须彼此相等。
scala 中不需要类名和文件名之间的对应关系。您可以(并且通常会)在每个 scala 文件中定义多种类型。编译器将尝试为每个公共类型创建一个不同的 .class 文件,文件名对应于类型名称,以实现与 java 的互操作性(对于在 java 中没有直接对应关系的复杂或嵌套类型,scalac 将生成 .具有奇怪/损坏名称的类文件...)
关于为什么不强制执行这种通信的一些说明(可能不是完整的列表,只是为了给您一个想法):
case class Foo(foo:String)
对应于一个完整且有些复杂的java类,但是将它放在自己的文件中似乎很浪费......trait Fooer {def foo="foo"}
可以转换为各种类似 java 的类型,它们实现了特征的“具有默认实现的接口”性质。对于 scala 语法允许并用于一些常见 scala 模式的嵌套对象/类/类型,这会变得更糟。在 scala 中,一个 .scala 文件可以包含许多(公共)类或包。
scala 中的文件名不必与文件中的任何类名匹配。您可以在 scala 文件中拥有任意数量的类。包结构也不必与文件夹结构匹配,但建议对齐。