Java代码的等效Scala代码无效(方法签名无效)
我和JUNG2图书馆一起工作,这样我可以可视化我创建的神经网络系统 首先,我遵循JUNG2的代码示例,并使用以下Java代码:Java代码的等效Scala代码无效(方法签名无效),java,scala,methods,method-signature,Java,Scala,Methods,Method Signature,我和JUNG2图书馆一起工作,这样我可以可视化我创建的神经网络系统 首先,我遵循JUNG2的代码示例,并使用以下Java代码: DirectedSparseMultigraph<Integer, Integer> graph = new DirectedSparseMultigraph<Integer, Integer>(); DelegateForest<Integer, Integer> delf = new DelegateForest&
DirectedSparseMultigraph<Integer, Integer> graph = new DirectedSparseMultigraph<Integer, Integer>();
DelegateForest<Integer, Integer> delf = new DelegateForest<Integer, Integer>();
Factory<Tree<Integer, Integer>> delt = DelegateTree.<Integer, Integer>getFactory();
Transformer<Integer, Double> trans = new Transformer<Integer, Double>() {
@Override
public Double transform(Integer arg0) {
return 1.0;
}
};
MinimumSpanningForest2<Integer, Integer> prim = new MinimumSpanningForest2<Integer, Integer>(graph, delf, delt, trans);
在Scala示例中,MinimumSpanningForest2的实例化在Eclipse中给了我一个很长的错误,即:
overloaded method constructor MinimumSpanningForest2 with alternatives:
(edu.uci.ics.jung.graph.Graph[V,E],edu.uci.ics.jung.graph.Forest[V,E],org.apache.commons.collections15.Factory[_ <:
edu.uci.ics.jung.graph.Graph[V,E]],org.apache.commons.collections15.Transformer[E,java.lang.Double])edu.uci.ics.jung.algorithms.shortestpath
.MinimumSpanningForest2[V,E] <and>
(edu.uci.ics.jung.graph.Graph[V,E],org.apache.commons.collections15.Factory[edu.uci.ics.jung.graph.Forest[V,E]],org.apache.commons.collecti
ons15.Factory[_ <:
edu.uci.ics.jung.graph.Graph[V,E]],org.apache.commons.collections15.Transformer[E,java.lang.Double])edu.uci.ics.jung.algorithms.shortestpath
.MinimumSpanningForest2[V,E] cannot be applied to (edu.uci.ics.jung.graph.DirectedSparseMultigraph[Int,Int],
edu.uci.ics.jung.graph.DelegateForest[Int,Int], org.apache.commons.collections15.Factory[edu.uci.ics.jung.graph.Tree[Int,Int]], java.lang.Object
with org.apache.commons.collections15.Transformer[Int,scala.Double])
重载方法构造函数MinimumSpanningForest2及其备选方案:
(edu.uci.ics.jung.graph.graph[V,E],edu.uci.ics.jung.graph.Forest[V,E],org.apache.commons.collections15.Factory[\uu啊……难以置信。当我在尝试了两个小时后发布这个问题时,我自己找到了答案。这可能就是所谓的门把手效应
在.scala文件中键入Double时,它会变成scala.lang.Double(当然),而我上面的方法需要java.lang.Double。因此,将其更改为以下内容可以解决此问题:
var transformer = new Transformer[Int, java.lang.Double] {
def transform(input:Int):java.lang.Double = {
return 1.0
}
}
虽然Java和Scala是可以互换的,但是你必须非常小心使用Java和Scala同名的类。如果你在没有Java知识的情况下编程Scala,这个问题可能很难解决。啊……难以置信。当我在试了两个小时后发布这个问题时,我自己找到了答案。这可能是所谓的门把手效应
在.scala文件中键入Double时,它会变成scala.lang.Double(当然),而我上面的方法需要java.lang.Double。因此,将其更改为以下内容可以解决此问题:
var transformer = new Transformer[Int, java.lang.Double] {
def transform(input:Int):java.lang.Double = {
return 1.0
}
}
虽然Java和Scala是可互换的,但是您必须非常小心使用Java和Scala同名的类。如果您在没有Java知识的情况下编程Scala,这个问题可能很难解决。Scala的double的正确FQN是Scala.double
。我会编辑这个,但这个更改是在SO的下面进行的编辑长度要求。Scala的double的正确FQN是Scala.double
。我会编辑此项,但此更改属于SO的编辑长度要求。