gpt4 book ai didi

java - 覆盖需要双数组的 java 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:58 24 4
gpt4 key购买 nike

假设我定义了以下 java 接口(interface):

public interface A
{
public Double[] x();
}

然后尝试在scala中实现如下:

class B extends A {
val v: Array[Double] = Array(2.3, 6.7)
override def x() = v
}

编译器给我以下错误:

type mismatch;
[error] found : Array[scala.Double]
[error] required: Array[java.lang.Double]
[error] override def x() = v

谁能告诉我自动转换这个数组的推荐方法?

谢谢设计

最佳答案

您不能自动转换它。问题是 Double 在 Java 中意味着类 java.lang.Double如 Java 中的 double),因此覆盖方法必须返回Array[java.lang.Double]。如果你有一个 Array[Double],你可以使用 map 转换它:

val v: Array[Double] = ...
val v1 = v.map(java.lang.Double.valueOf(_)) // valueOf converts Double into java.lang.Double

可以隐式转换:

implicit def wrapDoubleArray(arr: Array[Double]): Array[java.lang.Double] =
arr.map(java.lang.Double.valueOf(_))

但在大多数情况下这是个坏主意。

关于java - 覆盖需要双数组的 java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22791485/

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