2012-08-02 3 views
3

나는 JDBC 드라이버를 구현 Clojure의에서 자바 클래스를 생성하고 사용하여 정의 할 수있는 방법, 문제는 일반적으로 JDBC 드라이버과 같이 static 초기화 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 클래스 선언에 무엇을 넣어야하고 구현하는 함수에 어떤 이름을 사용해야합니까?

감사합니다.

답변

3

나는 이것이 현재 순수 gen-class에서 가능하다고 생각하지 않습니다. Clojure에서의 세대 급 항상이 정적 초기화의 생성에 약간의 유연성 (gen-class:load-impl-ns 옵션 참조)이

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

에 전화로 Clojure의 런타임에 생성 된 클래스를 묶어 정적 초기화를 생성 하지만 genclass.clj를 검토 한 후에 볼 수있는 이니셜 라이저에 사용자 정의 코드를 추가하는 방법은 없습니다.

btw - JVM에서 static initializer 'method'의 이름은 <clinit>

입니다.