2009-07-24 83 views
13

Java代碼:如何從Java調用Scala對象?

import javax.swing.Timer; 
class Main { 
    public static void main(String args[]) { 
    MyListener myListener = new MyListener(); 
     Timer timer = new Timer(1000, myListener); 
    timer.start(); 
     while(timer.isRunning()) { 
      System.out.print("."); 
     } 
    } 
} 

Scala代碼:

import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
class MyListener extends ActionListener { 
    override def actionPerformed(arg0: ActionEvent) { 
     println("Do something"); 
    } 
} 

命令行:

scalac MyListener.scala 
javac Main.java 
java -cp /usr/share/java/scala-library.jar:. Main 
+2

它應該工作精細。當你嘗試時會發生什麼? – skaffman 2009-07-24 18:54:15

+0

我不知道從哪裏開始,從我通過google閱讀的內容看起來有點複雜。該死的老職位(2008年),我很高興Scala一直處於非常活躍的發展階段。我用我所做的更新了我的問題。 – givanse 2009-07-24 19:33:58

回答

12

我會用java.util.Timer的開始 - 而不是javax.swing.Timer中。除非您使用GUI運行應用程序,否則擺動計時器將不起作用(即,如果您通過控制檯在沒有特殊命令行參數的情況下在Linux上運行它,則最好避免使用它)。

設置,旁白:

  1. 可以肯定,當你嘗試運行的代碼,你包括你的classpath斯卡拉 - library.jar。

  2. 不要忘了啓動定時器 - timer.start()

此代碼工作對我很好(無需修改Scala代碼):

MyListener myListener = new MyListener(); 
Timer timer = new Timer(1000, myListener); 
timer.start(); 
Thread.sleep(10000);