小编Hug*_*aal的帖子

斯卡拉:谁能解释一下?

请考虑以下Scala代码:

case class Data[T](value: Option[T]) {
  def get: T = try {
    doGet
  } catch {
    case e: Exception => throw new IllegalArgumentException
  }

  def doGet: T = value match {
    case Some(v) => v
    case None => ().asInstanceOf[T]
  }
}

Data[Unit](None).get
Data[Integer](None).get // which exception is thrown here?
Run Code Online (Sandbox Code Playgroud)

[剧透]这是一个ClassCastException; 谁能解释为什么它没被捕获并被一个IllegalArgumentException

PS:要抢占任何关于我为什么要这样做的问题:这是一些代码的简化版本,它使用json4s将一些字符串解析成一个Option[T]; 如果解析失败None则返回,如果TUnit,那就没关系,如果T是其他类型则不行.

generics scala

19
推荐指数
1
解决办法
500
查看次数

标签 统计

generics ×1

scala ×1