为什么我不能以这种方式使用scala MATCH?

时间:2019-03-01 01:18:43

标签: scala

我想将Java对象(实型可以是布尔数字符串)格式化为com.google.gson.JsonPrimitive。我在下面尝试了两种方法,有人可以告诉我为什么第一个无效而第二个有效。 (我猜是因为scala匹配的返回类型被推断为AnyRef或java.lang.Object,但这对于JsonPrimitive的结构而言不是有效类型,scala匹配的第二种返回类型被推断为JsonPrimitive,可以将其分配给val jsonPrimitive。我的猜测正确吗?谢谢。)

对象o =新的整数(0);

  

这行不通

val jsonPrimitive = new JsonPrimitive(o match {  
  case n: Number => n
  case b: java.lang.Boolean => b
  case s: String => s
  case _ => throw new Exception...
})  
  

这有效

val jsonPrimitive = o match {  
  case n: Number => new JsonPrimitive(n)
  case b: java.lang.Boolean => new JsonPrimitive(b)
  case s: String => new JsonPrimitive(s)
  case _ => throw new Exception...
}  

0 个答案:

没有答案