设置setter&的格式Scala案例类中的getter

时间:2012-05-02 10:42:44

标签: scala encapsulation

在Scala中,我有一个案例类:

case class MonthSelectionInfo(monthSelection: MonthSelection.Value, customMonth:Int = 0, customYear:Int = 0) {

 def this(monthSelection: MonthSelection.Value) = {
   this(monthSelection, 0, 0)
 }
}


object MonthSelection extends Enumeration {
  type MonthSelection = Value

  val LastMonth, ThisMonth, NextMonth, CustomMonth = Value
}

当我有一个案例类的实例时,我必须使用

myMonthSelectionInfo.monthSelection

myMonthSelectionInfo.eq(newMonthSelection)

得到&设置包含在。

中的MonthSelection实例

是否有任何不错的Scala方式来格式化getter& setter看起来更像普通的Java POJO?例如

myMonthSelectionInfo.setMonthSelection(newMonthSelection)

2 个答案:

答案 0 :(得分:6)

@BeanProperty注释可为字段生成getter和setter。

case class MonthSelectionInfo(@reflect.BeanProperty var monthSelection: MonthSelection.Value)

scala> val ms = MonthSelectionInfo(MonthSelection.LastMonth)
ms: MonthSelectionInfo = MonthSelectionInfo(LastMonth)

scala> ms.setMonthSelection(MonthSelection.ThisMonth)

sscala> ms.getMonthSelection
res4: MonthSelection.Value = ThisMonth

答案 1 :(得分:0)

在面向对象的编程中,getter和setter是大多数人都同意拥有一些现实世界的好处。不幸的是,他们有时候写起来很烦人。它们通常不包含大量代码,但是当你一遍又一遍地写同样的东西时,它会变得非常快。根据我的经验,大多数吸气剂和制定者非常相似,因此必须有一种“更好”的方法来实现相同的结果。

link可能会对您有所帮助。