![](/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.