在Scala IDE中重命名.scala文件不会重命名该类

use*_*254 4 eclipse scala scala-ide

当我通过Eclipse重命名.scala文件时,类名本身不会被重命名.

这是预期的行为吗?它似乎没有破坏任何东西.

我希望它可以重命名,来自Java背景,文件名/类名必须相等.

Pao*_*lla 12

scala中不需要类名和文件名之间的对应关系.您可以(并且通常会)在每个scala文件中定义多个类型.编译器将尝试为每个公共类型创建一个不同的.class文件,其文件名对应于类型名称,以便与java互操作(对于java中没有直接对应关系的复杂或嵌套类型,scalac将生成.具有奇怪/受损名称的类文件...)

关于为什么没有强制执行这种通信的一些注释(可能不是一个完整的列表,只是为了给你一个想法):

  1. 鉴于斯卡拉的简洁性,这将是浪费.case class Foo(foo:String)对应一个完整且有点复杂的java类,但在自己的文件中使用它似乎很浪费...
  2. 它会降低代码的可读性.有时,您定义的案例类层次结构(例如)与您发送给actor的各种消息相对应.让他们在一起强调他们的意图.
  3. 通常它是毫无意义的.scala中的一个相对简单的定义,trait Fooer {def foo="foo"}可以转换为各种类似java的类型,它们实现了特性的"默认实现接口".对于scala的语法所允许的嵌套对象/类/类型,这种情况会变得更糟,并且会在一些常见的scala模式中使用.
  4. 有Scala语义(特别是密封的特征),实际上需要在一个文件中定义多个类(以下是@DaveGriffith的评论)