gpt4 book ai didi

java - 为 java.util.Collection#toArray 创建 Scala 委托(delegate)时遇到问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:59 25 4
gpt4 key购买 nike

Java API中定义的方法:

interface Collection<T> {
<X> X[] toArray(X[] a);
}

我尝试在 Scala 中做这样的事情:

class SCollection[T] extends Collection[T] {
val queue = new LinkedBlockingQueue[T]

def toArray[X](a: Array[X]) : Array[X] = queue.toArray(a)
}

为了清楚起见,我省略了界面中的其他方法。编译器提示:

overloaded method value toArray with alternatives:
[T](x$1: Array[T with java.lang.Object])Array[T with java.lang.Object] <and>
()Array[java.lang.Object]
cannot be applied to (Array[X])
def toArray[X](a: Array[X]) : Array[X] = queue.toArray(a)
^

如何成功覆盖 toArray(..) 方法?

最佳答案

编译器会提示,因为你必须确保你不传递原始数组,例如Array[Int](在 Java 中映射到 int[])。

你可以这样写你的方法:

   override def toArray[X](a: Array[X with AnyRef]) = queue.toArray[X](a)

关于java - 为 java.util.Collection#toArray 创建 Scala 委托(delegate)时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5161601/

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