ava*_*gen 1 java methods scala method-signature
我正在使用JUNG2库,这样我就能想象出我创建的神经网络系统.
首先,我关注JUNG2的代码示例,并使用以下Java代码:
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);
Run Code Online (Sandbox Code Playgroud)
现在Scala中的等效代码:
var graph = new DirectedSparseMultigraph[Int, Int]
var delf = new DelegateForest[Int, Int]()
var delt = DelegateTree.getFactory[Int, Int]()
var trans = new Transformer[Int, Double] {
def transform(input:Int):Double = {
return 1.0
}
}
var prim:MinimumSpanningForest2[Int, Int] = new MinimumSpanningForest2(graph, delf, delt, trans)
Run Code Online (Sandbox Code Playgroud)
在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])
Run Code Online (Sandbox Code Playgroud)
我一直在寻找年龄,但我无法看到问题.看看Collections和JUNG2的API文档,我很肯定仿制药是正确的.JAVA的例子运作完美.
呃......不可思议.当我在尝试2小时后发布问题时,我自己找到了答案.这可能是所谓的门把手效应....
在.scala文件中键入Double时,这变为scala.lang.Double(ofcourse),而我上面的方法需要java.lang.Double.所以通过改变它来解决它:
var transformer = new Transformer[Int, java.lang.Double] {
def transform(input:Int):java.lang.Double = {
return 1.0
}
}
Run Code Online (Sandbox Code Playgroud)
尽管Java和Scala是可互换的,但您必须非常小心Java和Scala同名的类.如果您在没有Java知识的情况下编写Scala,那么这个问题可能很难解决.