LocalDate.now()的隐式数字扩展.plusMonths(m)

时间:2016-03-08 16:41:47

标签: scala date intellij-idea

我在这样的隐式类中有这个代码:

object TenorOperations {
  implicit class TenorOperations(thiss: Tenor) {

    def toDate: LocalDate = thiss match {
      case Day(d) => LocalDate.now().plusDays(d)
      case Month(m) => LocalDate.now().plusMonths(m)
      case Year(y) => LocalDate.now().plusYears(y)
      case errorDate => throw new Exception("Unexpected date: "+errorDate)
    }

  }
}

它不会在IDEA中编译。

Error:(14, 47) implicit numeric widening
      case Day(d) => LocalDate.now().plusDays(d)
                                              ^
Error:(15, 51) implicit numeric widening
      case Month(m) => LocalDate.now().plusMonths(m)
                                                  ^
Error:(16, 49) implicit numeric widening
      case Year(y) => LocalDate.now().plusYears(y)
                                                ^

这曾经工作过。我该如何解决?

2 个答案:

答案 0 :(得分:5)

您似乎正在使用CustomRepository,其中/api/entity占用java.time.LocalDate,而不是LocalDate.plusDays。通常,这将很好地编译,除非你们都打开Long告诉Scala编译器在扩大转换时发出警告; 2)打开Int以警告错误。

您可以编写-Ywarn-numeric-widen(等)以明确转化。

答案 1 :(得分:1)

我不确定为什么会这样,但您可以尝试LocalDate.now().plusMonths(Period.months(m))(相同的日期和年份)。