scala.Array[Long]不';t不符合预期的类型scala.Array[java.lang.Long]
我想将java代码与一些scala代码混合使用,但当尝试将STR转换为长数组时,出现了错误。 下面是我的代码示例:scala.Array[Long]不';t不符合预期的类型scala.Array[java.lang.Long],java,scala,Java,Scala,我想将java代码与一些scala代码混合使用,但当尝试将STR转换为长数组时,出现了错误。 下面是我的代码示例: val idsStr:String = "1,2,3"; val ids:Array[java.lang.Long] = idsStr.split(",").map(s=>java.lang.Long.parseLong(s)) 和错误提示: Error:(11, 58) type mismatch; found : Array[scala.Long] requir
val idsStr:String = "1,2,3";
val ids:Array[java.lang.Long] = idsStr.split(",").map(s=>java.lang.Long.parseLong(s))
和错误提示:
Error:(11, 58) type mismatch;
found : Array[scala.Long]
required: Array[java.lang.Long]
val ids:Array[java.lang.Long] = idsStr.split(",").map(s=>java.lang.Long.parseLong(s))
提前感谢。使用
java.lang.Long.parseLong
对获取java.lang.Long
没有任何帮助,因为parseLong
是一种静态帮助方法,返回原语(未包装)Long
。因此,对于解析,您也可以使用Scala的.toLong
您需要的是转换为java.lang.Long
,以强制执行自动装箱:
val idsStr:String = "1,2,3";
val ids: Array[java.lang.Long] =
idsStr.split(",").map(_.toLong.asInstanceOf[java.lang.Long])
或者,您可以使用java.lang.Long
的构造函数之一:
val ids2: Array[java.lang.Long] =
idsStr.split(",").map(str => new java.lang.Long(str.toLong))
val ids3: Array[java.lang.Long] =
idsStr.split(",").map(str => new java.lang.Long(str))