4

JDBC ドライバーを実装する Clojure から 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必要があり、それを実装する関数にはどの名前を付ける必要がありますか?

ありがとう。

4

1 に答える 1

4

現時点では、これが純粋に可能であるとは思わないgen-class。clojureのgen-classは常に静的初期化子を生成し、生成されたクラスをclojureランタイムに結び付けます。

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

その静的初期化子の生成にはある程度の柔軟性がありますが(の:load-impl-nsオプションを参照gen-class)、genclass.cljを確認した後に表示される初期化子に独自のカスタムコードを追加する方法はありません。

ところで-少し脇に置いて、JVMでは静的初期化子の名前'メソッド'は<clinit>

于 2012-08-02T20:02:55.323 に答える