标题说明了一切。我似乎根本无法从 java 编译它,我需要重写该函数
def close(): Future[Unit]
但我需要在java中这样做。
谢谢
最佳答案
简短回答:在 Java 中,您需要对具有 Unit
的 Scala 类使用 scala.runtime.BoxedUnit
。
给定一个像这样的 Scala 类
abstract class ScalaFoo {
def close(): Future[Unit]
}
你的Java类必须像这样扩展它:
class JavaFoo extends ScalaFoo {
@Override
public Future<BoxedUnit> close() {
return null;
}
}
这种间接的原因是 Scala's Type Hierarchy 的一个怪癖。 :Unit
是一个scala.AnyVal
(而不是scala.AnyRef
/java.lang.Object
)因此没有方便的 Java 等效项。
关于java - 如何覆盖scala def close() : Future[Unit] in java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32656403/