1

在 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)
4

2 回答 2

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
于 2012-05-02T10:58:55.340 回答
0

在面向对象的编程中,getter 和 setter 是大多数人都认为有一些实际好处的东西。不幸的是,它们有时写起来很烦人。它们通常不包含大量代码,但是当您一遍又一遍地编写相同的东西时,它会很快变老。根据我的经验,大多数 getter 和 setter 都非常相似,因此有理由认为必须有一种“更好”的方法来实现相同的结果。

链接可能会对您有所帮助。

于 2012-05-02T10:58:28.770 回答