我想将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...
}