我一直在处理这个问题,我想将 Scala 转换Seq[Double]为 Java List<Double>。我发现的所有内容都显示了如何从 Scala 中完成此操作,但我找不到如何从 Java 中完成此操作。这就是我所拥有的:private void fun(Seq<scala.Double> scalaSeq) {
List<java.lang.Double> l = JavaConverters.seqAsJavaList(scalaSeq).stream().map(a -> java.lang.Double.valueOf(a.toString())).collect(Collectors.toList());
}所以基本上,我将 scala 转换Seq为 Java List,对其进行流式传输,然后将 Scala 字符串转换Double为 Java Double。我尝试使用Double::box,但当我尝试这样做时,编译器拒绝编译。显然需要一个java.lang.Double?我想知道是否有更直接的方法来执行此操作,并希望将其记录下来以供将来参考。有什么建议么?
2 回答
隔江千里
TA贡献1906条经验 获得超10个赞
Seq<scala.Double>
据我所知,在 Java 中没有用(除非它在以后的 Scala 版本中发生了变化)。相反,ScalaSeq[Double]
将具有Seq<Object>
从 Java 中看到的类型。然而,它实际上会包含java.lang.Double
对象,所以只是“作弊”
@SuppressWarnings("unchecked")private void fun(Seq<Object> scalaSeq) { List<Double> l = (List<Double>) (List<?>) JavaConverters.seqAsJavaList(scalaSeq); }
或者
@SuppressWarnings("unchecked") private void fun(Seq<Object> scalaSeq) { List<Double> l = JavaConverters.seqAsJavaList((Seq<Double>) (Seq<?>) scalaSeq); }
(所有Double
的java.lang.Double
)应该工作得足够好。
添加回答
举报
0/150
提交
取消