2015-06-11 88 views
0

如何從Java調用以下Scala方法?從Java調用Scala通用方法

def mult[A,B: ClassTag,C: ClassTag](rdd1:RDD[A], rdd2:RDD[B])(implicit multiplier: Multiplier[A,B,C]): RDD[C] = 
    rdd1.zip(rdd2).map(p => multiplier.multiply(p._1, p._2)) 

這可能嗎? Eclipse沒有給我任何幫助,它的自動完成。

回答

2

呃。你必須嗎? B和C ClassTags被添加到隱式參數列表中(在顯式參數之前),因此您可以添加使用scala.reflect.ClassTag對象生成的適當的參數。但它會變得醜陋。

喜歡的東西(未經測試):

mult(rdd1, rdd2, scala.reflect.ClassTag.apply(B.class), scala.reflect.ClassTag.apply(C.class), myMult);