我正在从 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/