![](/img/trans.png)
[英]How do make the JVM recognize a scala.Array[T] as a java array T[] in a polymorphic method call?
[英]scala.Array[Long] doesn't conform to expected type scala.Array[java.lang.Long]
我想将Java代码与一些Scala代码混合使用,但是当尝试将strs转换为Long Array时,发生了错误。 这是我的代码示例:
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.