gpt4 book ai didi

java - 如何在java代码中设置scala隐式值?

转载 作者:行者123 更新时间:2023-12-02 01:49:41 25 4
gpt4 key购买 nike

我有一个 scala 类,其定义如下:

object EigenvectorCentrality extends VertexMeasure[Double]{
override def compute[VD:ClassTag, ED:ClassTag](graph: Graph[VD, ED],vertexMeasureConfiguration: VertexMeasureConfiguration[VD,ED])(implicit num:Numeric[ED]): Graph[Double, ED] = computeEigenvector(graph,vertexMeasureConfiguration)

}

现在我想从Java代码中调用此类的计算函数,但我不知道如何设置计算函数的最新参数(Numeric[ED])。我将此函数称为如下:

EigenVectorCentrality.compute(mygraph,mygraph.vertices.vdtag,mygraph.vertices.vdtag,Numeric.Int)

但出现此错误:找不到参数 num 的隐式值:数字[ED]

该类与 Spark Graphx 相关。你知道java中scala的隐式变量是如何设置的吗?

最佳答案

什么是ED ?在进行隐式解析时,您应该传递 Scala 选择的相同对象。假设EDDouble ,你应该通过DoubleIsFractional对象,写为DoubleIsFractional$.MODULE$在 java 。

EigenVectorCentrality.compute(mygraph,mygraph.vertices.vdtag,mygraph.vertices.vdtag,DoubleIsFractional$.MODULE$)

如果EDInt ,应该是IntIsIntegral$.MODULE$相反。

如果ED是原始类型,映射 Scala/Java 原始类型有额外的麻烦。假设EDint (即 Scala 中的 Int),您不能拥有 Numeric<int> 类型的值在Java中,只有Numeric<Integer> ,但 Scala 中默认没有定义这种隐式。

关于java - 如何在java代码中设置scala隐式值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53167637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com