4

我正在使用来自 java 的 scala 库,特别是一个返回Either[A, B]. 在我的 java 代码中,我可以这样做:

scalaFunction.callMethod(new Function<Either<A, B>>() {
   public byte[] apply(Either<A, B> result) {
      B right = result.right().???
   }
}

result.right()返回 a RightProjection,但我无法在 Java 中导入它(使用 IntelliJ)。有没有一种正确的方法来处理 Java 中的 Either 对象?

4

2 回答 2

1

我没有对此进行测试,但根据 ScalaDoc for RightProjection,您应该可以调用get(). 请注意,如果result不是Right.

为了在 IDE 中使用 Scala 类,IDE 需要了解它们。因此,您需要添加scala-library.jar到 IDE 中指定的构建路径中。对于 IDE(以及 Java 编译器和运行时),Scala 只是一个常规库,它依赖于所有用 Scala 编写的库和程序。

于 2013-02-19T20:12:57.903 回答
0

RightProjection并且是在(不是 的内部类)中LeftProjection定义的嵌套类。您必须跟踪 Scala 对象到 JVM 类的编码。我认为它是带有附加的对象名称和其他一些东西......然后JVM级别的类将是一个名称结合了对象的类名称和一个(我认为是另一个)和.object Eitherclass Either$RightProjection$RightProjection

或类似的东西。我从来没有必要挖得这么深。

库存javap工具可以帮助您追踪这些信息。

于 2013-02-19T20:30:59.217 回答