【问题标题】:Convert scala list to <repeated...>将 scala 列表转换为 <repeated...>
【发布时间】:2016-01-03 13:11:27
【问题描述】:

我有一个带有 handle(Param... params) 签名的 java 方法。如何将 Scala 列表转换为这样的序列?

当我尝试使用数组时,我收到以下错误:

[error]   (x$1: <repeated...>[Param])Unit
[error]  cannot be applied to (Array[Param])

这是什么&lt;repeated...&gt;??

【问题讨论】:

    标签: java arrays list scala converter


    【解决方案1】:
    (x$1: <repeated...>[Param])Unit
    

    是可变参数的内部(编译器)表示。在普通的scala中,这对应于:

    (x$1: Param*) => Unit
    

    换句话说,您将Array[Param] 传递给期望Param 的(可变参数)列表的方法。 要解决此问题,请使用 _* 扩展数组并将每个元素视为不同的参数。换句话说,转这个:

    handle(myArray)
    

    进入这个:

    handle(myArray:_*)
    

    查看 scala 规范,4.6.3 Repeated Parameters

    【讨论】:

    • 我无法更改方法签名,它来自我正在使用的 API :(
    • 我不是说你必须改变方法签名,你只需要改变你的调用方式。
    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 2013-01-21
    • 2015-07-10
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多