java - 如何覆盖scala def close() : Future[Unit] in java

标签 java scala

标题说明了一切。我似乎根本无法从 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/

相关文章:

java - Spring JPA中调用oracle函数

java - 在 Oracle Application Server 下的 Eclipse 中调试 Web 应用程序

java - 为什么循环没有完成它的工作?

scala - 在构建SBT项目IntelliJ中,原点位置必须是绝对错误

Scala: 'def foo = {1}' 与 'def foo {1}'

scala - 某些使用 Dynamic 的代码无法在 block 内运行

java - 使用 postman 测试启用 spring security 的 api

java - 如何使用 FileOutputStream 删除 .txt 文件中的一行?

scala - 为什么Option不直接扩展Iterable特性?

scala - 更改列表并返回已删除内容的正确(功能)方法是什么?