gpt4 book ai didi

java - 代理无法实现java.lang.Thread

转载 作者:行者123 更新时间:2023-12-02 03:00:48 25 4
gpt4 key购买 nike

我正在尝试用java实现这个

window.addWindowListener(new WindowAdapter() {
@Override
public void windowDestroyNotify(WindowEvent arg0){
new Thread(){
@Override
public void run(){
animator.stop();
System.exit(0);
}
}.start();
};
});

就像 Clojure 中的那样

 (.addWindowListener (proxy [WindowAdapter][]
(windowDestroyNotify [arg0]
(.start (proxy [java.lang.Thread][]
(run
(.stop ani)
(System/exit 0)))))))

但是当我运行它时,它给了我这个错误

CompilerException java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.Symbol, compiling:     (program/core.clj:36:36)

36:36 是“(proxy [java.lang.Thread]”开始的地方

为什么它不能实现java.lang.Thread

最佳答案

该异常具有误导性,但问题在于代理 Threadrun 方法的实现,它缺少参数 vector 。

编译时以下表达式会生成相同的异常:

(proxy [Thread] [] (run (inc 1)))

虽然这个没有:

(proxy [Thread] [] (run [] (inc 1)))

误导性错误是由于 proxy 宏解析其参数的方式造成的。

关于java - 代理无法实现java.lang.Thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42401688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com