赞
踩
如下代码会报错:java.lang.Integer cannot be cast to java.lang.String
val j:java.lang.Integer=1
j.toString//报错java.lang.Integer cannot be cast to java.lang.String
j.asInstanceOf[String]//报错java.lang.Integer cannot be cast to java.lang.String
解决办法,引入 scala.collection.JavaConverters._
两种方式来完成集合类型在 Scala 与 Java 间的转换
scala.collection.JavaConversions._
自动转型,Scala 2.8 加入的。隐式转型可能会造成阅读上的障碍,可能会让人难以知晓什么变成了什么
scala.collection.JavaConverters._
然后再调用 asJava/asScala 方法半自动转型(自动部分在生成 AsJava/AsScala 中间实例)。Scala 2.8.1 加入,稍新, asJava/asScala 为我们标记出了实际转型的地方,以及从哪个方向到哪个方向
//java转换为scala,调用to*方法进行转换 import scala.collection.JavaConverters._ val j:java.lang.Integer=1 j.toString//ok j.asInstanceOf[String]//报错java.lang.Integer cannot be cast to java.lang.String,因为scala的string就是java.lang.String //scala数据类型转化为java数据类型 import scala.collection.JavaConverters._ val l = List(1L,2L,3L,4L) l.map(java.lang.Long.valueOf).asJava // or l.map(_.asInstanceOf[AnyRef]).asJava // or l.map(Long.box).asJava // List集合转换 val jl : java.util.List[Int] = new scala.collection.mutable.ListBuffer[Int].asJava //scala转scala //1.String 转Int val i : Int = Integer.parseInt("1") //2.Int | boolean转String val str: String = String.valueOf(1) val str1 = String.valueOf(true) //3.强制转换 用法:对象名.asInstanceOf[类型] val b : A = new B //强制转换 val c : B = b.asInstanceOf[B] //父类 class A //子类 class B extends A
参考:
https://docs.scala-lang.org/overviews/collections/conversions-between-java-and-scala-collections.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。