gpt4 book ai didi

Clojure 代理 Java 模板

转载 作者:行者123 更新时间:2023-12-02 14:24:57 26 4
gpt4 key购买 nike

上下文

我有这段Java代码

    btn.setOnAction(new EventHandler<ActionEvent>() {

public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});

我想将其转换为 Clojure。

我所知道的

(. btn setOnAction (proxy .... ????? .... ))

问题:

如何处理 Clojure 中的 EventHandler 部分?我相信这是一个 Java 模板。如何在 Clojure 中创建模板化对象?

最佳答案

在 Java 中,它们被称为 Generics ,而不是模板。此外,它们是使用类型删除来实现的,即没有通用信息 in the compiled bytecode ,这样 EventHandler<Foobar>对象被编译为非泛化的 EventHandler实例。

也就是说,Clojure 甚至没有尝试支持它们。您的 Java 代码会转换为

(.setOnAction btn 
(proxy [EventHandler] []
(handle [event]
(println "Hello World"))))

请参阅 proxy 上的文档以及 Java interop有关语法的更多详细信息。

关于Clojure 代理 Java 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120727/

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