2017-04-25 23 views

回答

3

符號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。