如何从 Java 创建 ScalaZ 析取?

How to create ScalaZ Disjunction from Java?

为什么?我正在为 Java-Scala Adapter class.

编写测试

如何在 Java 中为 \/[String, Int] 创建左右分离?

Scala 方法名称中的符号实际上有脱糖,用于在 JVM 中确定性地表示它们:\ 变为 $bslash/ 变为 $div-$minus。此外,Java 无法理解 Scala 的 Nothing 类型,因此我们需要插入缺失参数的实际类型。为了减轻使用 Java 的析取的痛苦,我们可以构建以下小助手(连同测试方法):

import scalaz.*;

public class JavaDisjunctionHelper {

    public static <A, B> $bslash$div<A, B> left(A a) {
        return new $minus$bslash$div(a);
    }

    public static <A, B> $bslash$div<A, B> right(B b) {
        return new $bslash$div$minus(b);
    }

    public static void main(String[] args) {
        $bslash$div<String, Integer> p = left("z");
        $bslash$div<String, Integer> q = right(3);
        System.out.println(p); // -\/("z")
        System.out.println(q); // \/-(3)
    }
}

这似乎适用于 Java 8,并且可能适用于从 Java 5 开始的任何版本,前提是您拥有 Scala 运行时和 Scalaz 的兼容版本。