[英]How to create ScalaZ Disjunction from Java?
為什么? 我正在為Java-Scala Adapter類編寫測試。
如何在Java中為\\/[String, Int]
創建左右分離?
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的兼容版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.