如何使用IntelliJ IDEA生成Scala setter和getter

sse*_*ano 4 scala intellij-idea

给出简单的课程

class MyClass {
  private var myVar: String = _
}
Run Code Online (Sandbox Code Playgroud)

如何生成setter和getter myVar

Code | Generate菜单显示:

  • 覆盖方法......
  • 实施方法......
  • 代表方法......
  • 版权
  • equals()和hashCode()
  • 的toString()
  • 伴侣对象

IntelliJ版本:14.1.5 操作系统:OS X 10.10.5

Sea*_*ira 8

@Zoltán是对的 - 在Scala中,getter和setter并不常见,因为:

  1. Scala鼓励不变性
  2. Scala在创建字段时已经为您生成了它们 - 它们根本不是根据Java bean约定命名的(您可以鼓励Scala 通过真正限制谁可以查看和修改字段来生成这些方法 - 想想final private[this] val).
  3. 由于#2,有可能从去var someFieldprivate var _someField,def someField = this._someField而且def someField_=(value: String) = { this._someField = value }不具有消费者更新自己的代码.换句话说,更改是源兼容的(虽然我认为它不是二进制兼容的).

如果你需要Java bean风格的getter和setter只是用这个字段注释@BeanProperty,scalac会为你生成getter和setter:

import scala.beans.BeanProperty

class MyClass {
  @BeanProperty
  var myVar: String = _
}
Run Code Online (Sandbox Code Playgroud)

请注意,为了获取is布尔属性的getter和setter,您需要使用它BooleanBeanProperty.

  • 这是行不通的,因为 bean 属性不应该是私有的。 (2认同)