【发布时间】:2015-07-20 08:25:33
【问题描述】:
我必须处理这个用 Java 编写的庞大的单体代码,并且有数百个代码重复,例如:
createButtonOne() {
...
public boolean pressed() {
doSomething();
return true;
}
}
createButtonTwo() {
...
public boolean pressed() {
doAnotherThing();
return true;
}
}
除了被调用的函数之外,代码字面上是相同的,但它相当烦人。当然,我可以将大部分方法外包出去,但这比使用更好的工具正确完成要花费我更多的时间。或者我是这么想的。
我想做的是这样的:
ScalaButton buttonOne = new ScalaButton();
buttonOne.create("Label", Controller.doSomething());
ScalaButton buttonTwo = new ScalaButton();
buttonTwo.create("Label2", Controller.doAnotherThing());
因此我按如下方式创建了 ScalaButton:
class ScalaButton
{
def create(label:String, action: () => Unit): Unit =
{
val button:Button = singletonCreator.createButton(label);
button.addListener(new InputListener()
{
override def pressed(...)
{
action()
true
}
}
}
问题是我从来没有从 Java 调用过这个调用,它说
发现无效,需要 scala.Function0
所以我想知道,是否有可能以这种(或另一种)方式将 java 方法调用传递给 Scala?我已经有几个月没有使用 Java 了,也从未以这种方式将它与 Scala 一起使用过……
【问题讨论】:
-
Controller 是用 Java 还是 Scala 编写的?
-
@EdStaub 目前一切都是用 Java 编写的。
-
@SethTisue Scala 和 Java 都在 2011 年进化,所以我看不到重复。我对您之前发布的问题进行了深入研究。
标签: java scala methods parameters