0

在 scala 中使用 @BeanProperty 或 Create Set & Get 方法,这是正确的方法

4

1 回答 1

1

一般来说,在函数式编程和 Scala 中,您应该始终更喜欢不可变对象。但是如果您需要更改对象状态,那么我会坚持使用 (g|s)setters。因为在这种情况下,您可以在不更改对象内部状态的情况下返回具有修改状态的新对象。

class MyClass(val name) {
  def setName(newName: String) = new MyClass(newName)
}

这种方式保持不变性并为您提供 setter:setName(String)和 getter:obj.name

@BeanPropery当您需要与某些 Java 代码进行高级别的互操作性时使用它,它可以帮助您快速为您的代码生成 (g|s)setters,但它有一些限制,因为您无法为这些方法指定您想要的名称。

虽然我建议使用带有复制方法的案例类:

case class Person(name: String, age)
val me = Person("Alex", 23) // create an object
val afterBD = me.copy(age = 24)

相同的语义,但纯粹是函数式的方法,没有任何可变的内部状态。

至于 Scala 中的 Spring 框架。我从来没有使用过它(感谢上帝=)),但是关于这个主题有一篇很好的帖子

于 2013-07-11T06:59:27.390 回答