gpt4 book ai didi

clojure - 如何使用 gen-class 定义静态初始值设定项

转载 作者:行者123 更新时间:2023-12-01 01:16:30 27 4
gpt4 key购买 nike

我正在从 Clojure 生成一个实现 JDBC 驱动程序的 Java 类,问题是通常 JDBC 驱动程序向 DriverManager 注册自己。在像这样的静态初始值设定项中:

public class MyDriver implements java.sql.Driver {
...
static {
...
try {
DriverManager.registerDriver(new MyDriver());
} catch (SQLException s) {
throw (RuntimeException) new RuntimeException
("could not register MyDriver driver!").initCause(s);
}
...
}
}

我必须在 gen-class 中放入什么声明以及实现它的函数应该使用哪个名称?

谢谢。

最佳答案

我不相信这在纯粹的 gen-class 中是可能的目前。 clojure 的 gen-class 总是生成一个静态初始化器,它通过调用将生成的类与 clojure 运行时联系起来

clojure.lang.Var#internPrivate(String, String)

静态初始值设定项的生成具有一定的灵活性(请参阅 :load-impl-ns 的选项 gen-class ),但是没有办法将您自己的自定义代码添加到我在查看 genclass.clj 后可以看到的初始值设定项。

btw - 顺便说一句,在 JVM 中,静态初始值设定项“方法”的名称是 <clinit>

关于clojure - 如何使用 gen-class 定义静态初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783736/

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