Scala布尔到字符串的转换

榆树

转换true: Boolean为字符串的一种方法

scala> true.toString
res: String = true

然而,

scala> true.asInstanceOf[String]
java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String

为什么后一种尝试失败?

非常感谢

电咖啡

这是因为Boolean与的子类型String或类型不兼容String

scala> val a: Any = "Hello"
a: Any = Hello

scala> val b = a.asInstanceOf[String]
b: String = Hello

scala> val c: Char = 123
c: Char = {

scala> val d = c.asInstanceOf[Int]
d: Int = 123

scala> (123).asInstanceOf[Double]
res0: Double = 123.0

scala> (1.3).asInstanceOf[Int]
res1: Int = 1

如您所见,我可以轻松地来回转换任何类型兼容的类型,在这种情况下,数字(包括字符)是交叉兼容的。所有类型都与兼容Any,因为Any它只保留任意对象引用,因此,只要您使用正确的类型“拆箱”,您就非常有意思。

scala> val arr = Array("Hello", 245, true)
arr: Array[Any] = Array(Hello, 245, true)

scala> val first = arr(0).asInstanceOf[String]
first: String = Hello

scala> val second = arr(1).asInstanceOf[Int]
second: Int = 245

scala> val third = arr(2).asInstanceOf[Boolean]
third: Boolean = true

这样可以很好地工作,而且只要您谨慎选择拆箱的方式,就不会有任何错误。这是在泛型被引入该语言之前在Java中的处理方式。就是说,如果将数组元素中的任何一个转换为错误的类型,都会得到转换异常。

.toString方法与类型转换不同,因为它根本不是类型转换,它的存在是为了将任何对象转换为自身的字符串表示形式的简洁方法。

scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)

scala> a.toString
res0: String = List(1, 2, 3, 4)

这样做是为了可以根据需要打印任何类型,并且与转换无关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章