为什么呢?我正在为Java-Scala Adapter类编写测试。
如何在Java中为CopySourceRange
创建左右分离?
答案 0 :(得分:3)
Scala方法名称中的符号实际上具有desugaring,用于在JVM中确定性地表示它们:\
转向$bslash
,/
转为$div
和-
到$minus
。此外,Java无法理解Scala的Nothing类型,因此我们需要插入缺少参数的实际类型。为了减轻使用Disjunction from 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的兼容版本。