[英]How can a static initializer be defined using gen-class
我正在從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
:load-impl-ns
選項),但是沒有辦法將自己的自定義代碼添加到初始化程序中,我可以在查看genclass后看到.clj。
順便說一下 - 在JVM中,靜態初始化程序'方法'的名稱是<clinit>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.