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

时间:2015-08-22 17:44:11

标签: scala 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
}

1 个答案:

答案 0 :(得分:-1)

这是对P.S的响应,其他人已经发布了主要问题的答案。

因为在setter(例如java中)中使用getter的逻辑是"面向未来"你的代码,如果你的私人领域" x"在每次获取/设置逻辑时,某个地方需要逻辑,然后您只需修改方法调用并且不会破坏任何调用它的现有代码。然而,如果您只有公共字段并且需要逻辑,则必须创建getter / setter,然后由于更改类的合同而破坏现有代码。因此scala只是自动删除样板代码。

希望这有帮助!