你如何从Java调用Scala对象?

2022-09-03 07:17:32

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

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

答案 1

我会从使用java.util.Timer开始 - 而不是javax.swing.Timer。Swing计时器将不起作用,除非您使用GUI运行应用程序(即,如果您在没有特殊命令行参数的情况下通过控制台在Linux上运行它,则它将不起作用 - 最好避免)。

撇开这一点不谈:

  1. 请注意,当您尝试运行代码时,您会在类路径上包含 scala-library.jar。

  2. 不要忘记启动计时器 - timer.start()

这段代码对我来说工作得很好(Scala代码不需要修改):

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

答案 2

推荐