【问题标题】:scala.Array[Long] doesn't conform to expected type scala.Array[java.lang.Long]scala.Array[Long] 不符合预期的类型 scala.Array[java.lang.Long]
【发布时间】:2018-03-05 18:56:25
【问题描述】:

我想将 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 scala


    【解决方案1】:

    使用java.lang.Long.parseLong 不会以任何方式帮助您获得java.lang.Long,因为parseLong 是一个静态辅助方法,它返回一个原始(未包装)long。因此,对于解析,您也可以使用 Scala 的.toLong

    您需要的是 castjava.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))
    

    【讨论】:

      猜你喜欢
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 2015-12-13
      • 2014-04-06
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      相关资源
      最近更新 更多