gpt4 book ai didi

java - 在 Scala 中使用抽象成员类实现抽象的通用 Java 类

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

我试图在 Scala 中实现一个抽象的、通用的 Java 类,但我收到了一个形式错误

object creation impossible, since method B in class A of type (x$1: A<Concrete1, Concrete2>#C)Unit is not defined

我正在实现的库类如下所示:

public abstract class A<T, U> {
public void B(C);

public abstract class C {
// elided
}
}

我想实现一个 A交还给图书馆(它将调用 B ,提供 C )。在 Java 中,我可以这样做:

new A<Concrete1, Concrete2>() {
@Override
public void B(C c) {
// implementation
}
}

在 Scala 中,我正在尝试

new A[Concrete1, Concrete2] {
def B(c: C): Unit = {
// implementation
}
}

我在顶部收到了错误消息。使用 override ,编译器提示 method B overrides nothing .似乎 Scala 类型系统无法识别 C我作为 A<Concrete1, Concrete2>#C 传入,但我不确定它认为它是什么类型。

我试过指定 self: A[Concrete1, Concrete2] => , 以及 C 上的 self 类型: def B(c: self.C ,但都没有解决问题。我也试过def B(c: A[Concrete1, Concrete2].C) , 但这会引发语法错误。

有什么建议吗?

最佳答案

已解决:def B(c: A[Concrete1, Concrete2]#C): Unit。需要通用类型信息才能使其成为有效的覆盖,但我不知道 # 运算符。

关于java - 在 Scala 中使用抽象成员类实现抽象的通用 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36803712/

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