我正在从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声明中放入什么,实现它的函数应该有什么名称?
谢谢。
发布于 2012-08-03 04:02:55
我不相信这在目前纯gen-class中是可能的。clojure的gen-class总是生成一个静态初始化器,它通过调用
clojure.lang.Var#internPrivate(String, String)静态初始化器的生成有一定的灵活性(请参阅gen-class的:load-impl-ns选项),但是在查看genclass.clj之后,没有办法将您自己的自定义代码添加到初始化器中。
顺便提一下,在JVM中,静态初始化器“方法”的名称是<clinit>。
https://stackoverflow.com/questions/11783736
复制相似问题