是否可以在 Scala 中声明一个公共字段

Mif*_*eet 5 syntax visibility scala

我想知道是否可以在 Scala 类中声明一个公共字段。阶通常产生用于私有字段valvar主体变量/参数的构造和getter / setter方法用适当的可见度。

我想知道是否可以在 Scala 中声明一个公共 Java 类字段,而不是一个 getter。


PS:为什么会有人需要它?它可能很有用,例如与依赖字段的 Java 框架集成:

class MyTest extends JUnitSuite {
    @Rule 
    val temporaryFolder = new TemporaryFilder() 
    // throws java.lang.Exception: The @Rule temporaryFolder must be public
}
Run Code Online (Sandbox Code Playgroud)

小智 -1

这是针对PS的回应,其他人已经发布了主要问题的答案。

因为在 setter 中使用 getters 背后的逻辑(例如在 java 中)是为了“面向未来”你的代码,所以如果你的私有字段“x”在某处每次获取/设置时都需要逻辑,那么你只会修改方法调用,不会破坏调用它的任何现有代码。然而,如果您只有公共字段并且需要逻辑,则必须创建 getter/setter,然后由于更改类的契约而破坏现有代码。所以 scala 只是自动执行此操作来删除样板代码。

希望这可以帮助!