Scala 如何实例化新的 Option[java.sql.Date] 类型

Scala how to instantiate new Option[java.sql.Date] type

我有 var date_of_birth2 : Option[java.sql.Date] = None.

稍后我必须用字符串填充date_of_birth2。

 String date = "01/01/1990"
 var formate = new SimpleDateFormat("dd/MM/yyyy").parse(date)
 var aDate = new java.sql.Date(formate.getTime()); 

但是aDate 只是java.sql.Date 的类型。我该如何分配?

var mdate_of_birth2 : Option[java.sql.Date] = date // date 只是 String 类型

你把它包裹在 Some:

var mdate_of_birth2: Option[java.sql.Date] = Some(aDate)

不过,您应该看看是否可以重构代码以使其成为 val

不像@hezamu 所建议的那样显式使用 Some,您可以像这样在 Option 同伴上使用 apply 方法:

val maybeADate:Option[Date] = Option(aDate)

在这种情况下,如果 aDate 为空,那么您的 Option 将是 None 而不是 Some(null),这是不受欢迎的。

由于 parse 方法会在出现格式错误时抛出异常,您也可以考虑使用 Try,将失败压缩到 None.

val aDate = Try(new SimpleDateFormat("dd/MM/yyyy").parse(date))
    .map(d => new java.sql.Date(d.getTime()))
    .toOption

如果您 希望它抛出异常,那么我会使用 Option.apply.

使用@cmbaxter 的答案