我有這是用Java編寫的,有數以百計的代碼重複就像一個巨大的統一代碼工作:通Java的方法調用/ Scala的類方法
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這個調用,它說
找到void,required scala.Function0
所以我想知道,是否有可能通過這種(或另一種)方式向Scala傳遞一個java方法調用?我沒有在幾個月內與Java合作過,也沒有用這種方式和Scala一起使用它...
控制器是用Java還是Scala編寫的? –
@EdStaub目前所有東西都是用Java編寫的。 – Sorona
@SethTisue Scala和Java都已經進化了2011年,所以我沒有看到重複。我仔細看過你之前發佈的問題。 – Sorona