2009-07-24 8 views
13

codice Java:Come chiamate oggetti Scala da Java?

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 codice:

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

Riga di comando:

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

Si dovrebbe funzionare bene. Che cosa succede quando ci provi? – skaffman

+0

Non sapevo da dove cominciare e da quello che ho letto su google-ing mi è sembrato un po 'più complesso. Damn OLD posts (2008), sono contento che Scala abbia avuto uno sviluppo molto attivo. Ho aggiornato la mia domanda con quello che ho fatto. – givanse

risposta

12

mi piacerebbe iniziare utilizzando java.util.Timer - non javax.swing.Timer . Lo swing timer non funzionerà a meno che tu non stia eseguendo la tua app con una GUI (cioè non funzionerà se lo usi su Linux attraverso una console senza uno speciale parametro da riga di comando - meglio evitato).

Impostazione che a parte:

  1. essere sicuri che quando si tenta di eseguire il codice, si includono scala-library.jar sul classpath.

  2. Non dimenticate di avviare il timer - timer.start()

Questo codice ha funzionato bene per me (il codice Scala richiesta nessuna modifica):

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

Secondo jdk-6-doc solo javax.swing.Timer riceve un ActionListener nel suo costruttore e io ne ho bisogno per sparare altre azioni. – givanse

Problemi correlati