Java 如何在Intellij中为scala的所有字段生成getter和setter

Java 如何在Intellij中为scala的所有字段生成getter和setter,java,scala,intellij-idea,intellij-14,Java,Scala,Intellij Idea,Intellij 14,我有下面的代码 class TestData { private var name : String = _ private var age : Int = _ } 当我尝试在java类(alt+insert)->generate->中生成上述的getter和setter时,它将为所有可用字段生成ak,并且我能够为多个字段添加 但是我想在Scala中实现的同样的事情是,它不要求字段,而是为第一个字段添加getter和setter Google搜索了aot,但可以在Intellij中找到

我有下面的代码

class TestData {
  private var name : String = _
  private var age : Int = _
}
当我尝试在java类(alt+insert)->generate->中生成上述的getter和setter时,它将为所有可用字段生成ak,并且我能够为多个字段添加

但是我想在Scala中实现的同样的事情是,它不要求字段,而是为第一个字段添加getter和setter


Google搜索了aot,但可以在Intellij中找到解决方案。

您不应该在Scala中使用
var
s。尽可能保持一切不变

也就是说,如果您真的想要一个具有可变值的类,那么您可以使用case类而不是普通类。Case类在幕后为您生成getter和setter

scala> case class Person(var name: String, var age: Int)
defined class Person

scala> val p1 = Person("billy", 12)
p1: Person = Person(billy,12)

scala> println(p1)
Person(billy,12)

scala> p1.age = 45
p1.age: Int = 45

scala> println(p1)
Person(billy,45)

正如评论所说,强烈建议不要在Scala中使用可变状态,如果您仍然想这样做,可以按如下操作:

class TestData (var name: String, var age: Int)
在那里,您可以创建一个对象,并将值设置为
object.attribute
,并将值设置为
object.attribute=desiredValue

scala> val t = new TestData("edward", 12)
t: TestData = TestData@40ce2a1f

scala> t.name
res2: String = edward

scala> t.name = "Josh"
t.name: String = Josh

scala> t.name
res3: String = Josh
您应该使用具有不可变值的类来代替具有可变变量的类。这些选项中的任何一个都将是一种更具规模的方式:

class TestData (val name: String, val age: Int)
case class TestData (name: String, age: Int)

在Scala/函数式编程中不鼓励可变状态。在必要的情况下,它很好地隐藏在公众视线之外。因此,如果每个人都需要的话,设置者就很少有了。我强烈建议你重新考虑你的程序设计。