我想知道是否可以在Scala类中声明公共字段。 Scala通常会为val
和var
正文变量/构造函数参数以及具有适当可见性的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
}
答案 0 :(得分:-1)
这是对P.S的响应,其他人已经发布了主要问题的答案。
因为在setter(例如java中)中使用getter的逻辑是"面向未来"你的代码,如果你的私人领域" x"在每次获取/设置逻辑时,某个地方需要逻辑,然后您只需修改方法调用并且不会破坏任何调用它的现有代码。然而,如果您只有公共字段并且需要逻辑,则必须创建getter / setter,然后由于更改类的合同而破坏现有代码。因此scala只是自动删除样板代码。
希望这有帮助!