gpt4 book ai didi

java - 如何从 Java 调用 Scala 的 HashMap.toArray()?

转载 作者:搜寻专家 更新时间:2023-11-01 03:10:54 27 4
gpt4 key购买 nike

我使用 scala.collection.immutable.HashMap<A,B>来自一些 Java 代码并想使用 Scala 原生方法 toArray()将 map 的内容(或值)转换为数组。

我目前使用 JavaConversions.asMap()等,然后使用传统但丑陋的 Java toArray(T[])方法,但我更愿意直接调用 Scala 内置方法。

这必须从 Java 完成。在 Scala 中重写代码不是一种选择。

我正在使用 Scala 2.9.1。

最佳答案

您需要提供 ClassManifest对于数组类型,T .这可以从 ClassManifest 的伴随对象(见注释)中获得。 .所以:

itr.toArray(ClassManifest$.MODULE$.fromClass(T.class));

在这个例子中,T是真实类型(不是类型参数)。例如,如果 itrSeq[String] ,你会用到这个;

itr.toArray(ClassManifest$.MODULE$.fromClass(String.class));

因为 scala 的 Map实际上是一堆元组,你会用这个:

map.toArray(ClassManifest$.MODULE$.fromClass(Tuple2.class));

当然,这会给你一个 Tuple2[] , 而不是 Tuple2<K,V>[]对于键和值类型 KV分别。在 Java 领域,您可以强制转换原始类型


注意: 从 Java 访问伴随对象

类型的伴生对象 M可通过访问静态字段 M$.MODULE$ 获得

关于java - 如何从 Java 调用 Scala 的 HashMap.toArray()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com